我有一个包含以下代码的 sql 函数:
DECLARE @CodeNameString varchar(100)
SELECT CodeName FROM AccountCodes ORDER BY Sort
我需要将选择查询的所有结果连接到 CodeNameString 中。
显然,C# 代码中的 FOREACH 循环可以做到这一点,但如何在 SQL 中做到这一点呢?
如果您使用的是 SQL Server 2005 或更高版本,则可以使用此FOR XML PATH & STUFF
trick:
DECLARE @CodeNameString varchar(100)
SELECT
@CodeNameString = STUFF( (SELECT ',' + CodeName
FROM dbo.AccountCodes
ORDER BY Sort
FOR XML PATH('')),
1, 1, '')
The FOR XML PATH('')
基本上将字符串连接成一个长 XML 结果(类似于,code1,code2,code3
等)和STUFF
在第一个字符处放置一个“无”字符,例如擦除“多余的”第一个逗号,为您提供您可能正在寻找的结果。
UPDATE:好的 - 我理解评论 - 如果数据库表中的文本已经包含类似字符<
, >
or &
, then 我目前的解决方案实际上会将它们编码为<
, >
, and &
.
如果您对该 XML 编码有疑问 - 那么是的,您必须查看 @KM 提出的解决方案,它也适用于这些字符。一个字warning对我来说:这种方法是多很多资源和处理密集型 - 如您所知。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)