回答

收藏

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

技术问答 技术问答 270 人阅读 | 0 人回复 | 2023-09-14

我在SQL Server的更大的Select语句中有以下查询:8 Z7 ^# }7 l* c/ w6 R% q) n
CONVERT(NVARCHAR(2000),stuff((SELECT '; ' + IsNull(D2.SelectedComments,'')
" M8 [" Q9 P) M  u6 g/ t: Z9 u FROM #StudentDetails D2+ z4 v/ Q! y5 L/ p
WHERE D2.STUD_PK = A.STUD_PK AND D2.CourseNo = A.CourseNo. j, C8 j" Y7 ?  {
AND D2.Section = A.Section
( g, R" U4 `! u+ A5 L& `FOR XML PATH('')),1,2,'')) AS SelectedComments,
3 v) k1 T/ D$ ]在某些条目(例如)之后,此列将生成一些奇怪的符号This approach is satisfactory8 {1 u. b9 |0 q; g# @) x- }
.&#x0D。我不知道这.&#x0D是哪里来的。我尝试`SELECT SelectedComments FROM
' b' D; p0 P6 s6 K7 FStudentDetails在此之前做,但没有看到.&#x0D`。谁能告诉它可能来自哪里?9 V- k: h9 G% P" K7 m
                $ ^& N7 r) b0 d) |. V% q
解决方案:
: H& T4 X) A. {5 C7 {               
4 R2 ~) _1 s5 z
7 C" _& C2 f. b. k( J* c
5 ~/ g5 ?8 y7 L' ^% }                如果您修改了For Xml Path的用法,它将为您完成转义操作,并且您无需诉诸使用Replace函数:+ N( e2 q! ]! U' ?6 M- l! T8 e- B1 o
,   Stuff(# G/ E* g( H4 M2 I, l( d
        (
1 `4 f# f+ c5 H) P  F1 ^        Select '; ' + IsNull( D2.SelectedComments, '' ); N8 G! e3 D. e, Q  q
        From #StudentDetails As D22 U$ G' V# @! U* U
        Where D2.Stud_PK = A.Stud_PK
9 S0 V6 x( @' {( \6 K7 d' c6 d% h            And D2.CourseNo = A.CourseNo
# B, H. k: d) a            And D2.Section = A.Section
& I5 ^1 K6 j4 [        For Xml Path(''), type
$ N/ x; H! [4 B( n: K+ b2 Q        ).value('.', 'nvarchar(max)'): ^2 F. X2 N7 y6 d& ]- u
        , 1, 2, '') As SelectedComments
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则