-->

MySQL的GROUP_CONCAT和SQL Server版本转义字符串(SQL Server ve

2019-10-21 00:23发布

我只有MS SQL Server 2008和Visual Studio中的Express版本。 既然我不能创建一个SQL Server项目,因此CLR解决方案出了问题,我已经尝试使用

select col1, stuff( ( select ' ' + col2
from StrConcat t1
where t2.col1 = t1.col1
for xml path('')
),1,1,'')
from StrConcat t2
group by col1
order by col1

拿到一排级联COL2。 COL2是一个像\ n某些控制字符的varchar字段。 当它与上述SQL级联,它出现逃避那些控制字符,即。 变为&安培; 和\ n中 &#黄嘌呤氧化酶,这是不是我想要做的事。 鉴于col1和级联场将被用于更新另一个表,是什么让在其转义原来的形式串接领域的最佳途径或者是有没有,唯一的办法就是求助于外部代码?

该表的模式是这样的:StrConcat(ID INT主键,COL1 INT,TXT VARCHAR(80))COL1上有一个索引,TXT应该由COL1进行分组,通过组内ID进行排序。

Answer 1:

行为,当然, 通过设计 。 如果没有逃过这样,查询可以输出无效的XML。

如果您需要获得在SQL Server中的转义值,那么你将不得不使用的一个其他串联方法 (递归CTE通常是CLR聚合之后和下一个最有效的FOR XML ,但最难写的)。

当然,如果这是被直接传递到应用程序,它会更容易出现反转义它,即使用的XmlReader在.NET类。



文章来源: SQL Server version of MySQL's group_concat and escaped strings