问题:
在 SQL 中,函数包含一个检索的查询AccountCodes 表中按排序排序的 CodeName 值列表。目标是将这些值连接成单个字符串并将结果存储在 CodeNameString 变量中。
解决方案:
使用 FOR XML PATH 和 STUFF ( SQL Server 2005 或更高版本):
DECLARE @CodeNameString varchar(100) SELECT @CodeNameString = STUFF( (SELECT ',' + CodeName FROM dbo.AccountCodes ORDER BY Sort FOR XML PATH('')), 1, 1, '')
这个方法使用 FOR XML PATH 子句将 CodeName 值连接到 XML 字符串中。然后使用 STUFF 函数将生成的 XML 转换回字符串,并删除第一个字符(逗号)。
注意: 如果 CodeName 值包含,则此方法可能不起作用特定字符,例如 或 &。在这种情况下,建议采用替代解决方案,例如下面提出的解决方案:
替代解决方案(使用 DISTINCT 和 FOR XML RAW):
DECLARE @CodeNameString varchar(100) SELECT @CodeNameString = DISTINCT(CodeName) WHERE EXISTS (SELECT 1 FROM dbo.AccountCodes WHERE CodeName = @CodeNameString) FOR XML RAW, ',')
此方法使用 FOR XML RAW 子句创建包含连接值(不包括重复值)的 XML 字符串。然后将该字符串分配给 CodeNameString 变量。
以上是如何将 SQL 查询结果连接成单个字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!