SQL 'stuff' 和 'FOR XML PATH' 生成奇怪的符号

标签 sql sql-server tsql

我在 SQL Server 中的较大 Select 语句内有以下查询:

 CONVERT(NVARCHAR(2000),stuff((SELECT '; ' + IsNull(D2.SelectedComments,'')
 FROM #StudentDetails D2
 WHERE D2.STUD_PK = A.STUD_PK AND D2.CourseNo = A.CourseNo
AND D2.Section = A.Section
FOR XML PATH('')),1,2,'')) AS SelectedComments,

本专栏在某些条目后生成一些奇怪的符号,例如这种方法令人满意. 。我不明白 . 来自哪里。在此之前,我尝试执行 SELECT SelectedComments FROM #StudentDetails 操作,但没有看到 . 。谁能告诉我它来自哪里?

最佳答案

如果您修改了 For Xml Path 的使用,它将为您执行转义操作,并且您无需求助于使用替换功能:

,   Stuff(
        (
        Select '; ' + IsNull( D2.SelectedComments, '' )
        From #StudentDetails As D2
        Where D2.Stud_PK = A.Stud_PK
            And D2.CourseNo = A.CourseNo
            And D2.Section = A.Section
        For Xml Path(''), type
        ).value('.', 'nvarchar(max)')
        , 1, 2, '') As SelectedComments

关于SQL 'stuff' 和 'FOR XML PATH' 生成奇怪的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16547175/

相关文章:

sql-server - 当字符串数据被截断时,如何回滚 SQL 中的事务?

sql - 无法将 csv 导入 SQLite 中的表 : no such table error

mysql - 暂停或操作表中的自动增量列

sql-server - 用于备份 SQL Server 数据库的简单命令行程序或脚本是什么?

sql - 使用SQL过滤存储过程的结果

sql-server - 需要确保字符串之间有一个连字符

sql-server - 获取链接服务器状态的存储过程

sql - 两列总计不起作用

mysql - 如何在单个查询中创建几个表。 MySQL

sql - 数据库恢复 - 用于列出安全对象的 SQL 脚本