SQL“ stuff”和“ FOR XML PATH”生成奇怪的符号
技术问答
332 人阅读
|
0 人回复
|
2023-09-14
|
我在SQL Server的更大的Select语句中有以下查询:
' r9 `( ~0 m" u6 D' C' j6 z CONVERT(NVARCHAR(2000),stuff((SELECT '; ' + IsNull(D2.SelectedComments,'')
$ @) `; K [! k) A# D# f$ ~ FROM #StudentDetails D2# z+ w) C# z9 p; q1 A9 `
WHERE D2.STUD_PK = A.STUD_PK AND D2.CourseNo = A.CourseNo
2 t, L. J" Y5 k0 G% a7 B! lAND D2.Section = A.Section- u- L. {( O) F$ T i
FOR XML PATH('')),1,2,'')) AS SelectedComments," A% k8 I3 r, K) f- z- E" Z7 I
在某些条目(例如)之后,此列将生成一些奇怪的符号This approach is satisfactory( {% ^) v% \% v7 l3 l4 \
.
。我不知道这.
是哪里来的。我尝试`SELECT SelectedComments FROM
7 J7 a' M% K, P3 h- f, x" j y* C2 Z1 JStudentDetails在此之前做,但没有看到.
`。谁能告诉它可能来自哪里?- T3 e3 R6 m$ F& ~! j
7 D- |. S, q2 i4 H3 [! I
解决方案:0 V F. x" b; b9 v0 I4 k4 l
" t* Y+ c- R" }4 @8 d3 ~/ T8 L' i. ]1 `9 ?- j" K
. U( o3 q# v# q 如果您修改了For Xml Path的用法,它将为您完成转义操作,并且您无需诉诸使用Replace函数:2 a' U. h' f3 ? X
, Stuff(( s! [3 h b9 O! o* R
(
' [! Q- k% s+ ~& g. d; E9 I4 e( D Select '; ' + IsNull( D2.SelectedComments, '' )# A6 {. [% R2 n6 y+ Y
From #StudentDetails As D2+ k, ~; n2 s1 v6 A
Where D2.Stud_PK = A.Stud_PK- L9 D0 d$ ]: f+ n8 X4 V2 J6 u
And D2.CourseNo = A.CourseNo3 p6 a) }/ q4 h; t2 t1 N+ S
And D2.Section = A.Section( b; m! c, }' y
For Xml Path(''), type1 C& N6 M, d1 n6 z( E
).value('.', 'nvarchar(max)')
9 A; D0 Q) m1 m; P( d7 [ , 1, 2, '') As SelectedComments |
|
|
|
|
|