sql-server - SQL 上的 String.Join 等效项是什么?

标签 sql-server tsql

Possible Duplicate:
Is there a way to create a SQL Server function to “join” multiple rows from a subquery into a single delimited field?

大家好!

我正在寻找一种简单的方法来连接“n”个值。像这样的东西:

SELECT MyConcat(',', T.TextColumn)
FROM SomeTable AS T
WHERE T.SomeOtherColumn = SomeCondition

所以如果我有一个像这样的表:

SomeTable:
Id  | TextColumn | SomeOtherColumn
----+------------+----------------
1   | Qwerty     | Y
2   | qwerty     | N
3   | azerty     | N
4   | Azerty     | Y

这会导致类似的结果:

SQL:
SELECT MyConcat(';', T.TextColumn)
FROM SomeTable AS T
WHERE T.SomeOtherColumn = 'Y'

RESULT:
'Qwerty;Azerty'

最佳答案

这应该可以解决问题:

DECLARE @Result VARCHAR(MAX);

SELECT
    @Result = CASE
        WHEN @Result IS NULL
        THEN T.TextColumn
        ELSE @Result + ';' + T.TextColumn
    END
FROM
    SomeTable AS T
WHERE
    T.SomeOtherColumn = 'Y';

SELECT @Result

关于sql-server - SQL 上的 String.Join 等效项是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6170419/

相关文章:

mysql - 如何从表中选择最新记录

SQL搜索问题

sql-server - 为什么我不能比较这些十六进制值?

tsql - 将 unix 纪元时间戳转换为 TSQL 日期时间

sql - 从数据库中的每个表中选择每一行,其中 (columnName = value) 如果列名存在

sql - 分组依据检索 3 个值

sql-server - ARX 匿名化工具 - 支持的数据库

sql - Sql Server 中的版本号排序

sql - 在没有循环的情况下连接单个列中的记录?

sql - 如何从临时表选择中删除第一列