SQL“ stuff”和“ FOR XML PATH”生成奇怪的符号
技术问答
331 人阅读
|
0 人回复
|
2023-09-14
|
我在SQL Server的更大的Select语句中有以下查询:
$ }* ? X2 K" Q- M G4 Y+ [ CONVERT(NVARCHAR(2000),stuff((SELECT '; ' + IsNull(D2.SelectedComments,'')
3 u0 b" q+ a5 x S" R3 f# d FROM #StudentDetails D2. ~3 W* @5 y7 q8 F
WHERE D2.STUD_PK = A.STUD_PK AND D2.CourseNo = A.CourseNo9 b" p) d' p& g k: Z t
AND D2.Section = A.Section( k& |( t* L9 ?/ \* u' b& {0 G1 R
FOR XML PATH('')),1,2,'')) AS SelectedComments,
" T% ]. w0 y! `6 K" [在某些条目(例如)之后,此列将生成一些奇怪的符号This approach is satisfactory
2 t% g( z% v2 [* x8 a* `) F.
。我不知道这.
是哪里来的。我尝试`SELECT SelectedComments FROM
4 @. B$ O0 S) F. T+ {$ uStudentDetails在此之前做,但没有看到.
`。谁能告诉它可能来自哪里?
2 j1 N* `5 u- @3 Q6 g5 O
) B, ]& W3 A8 @2 w解决方案:
9 O6 \- i% q* H# Q. B, }$ d ! i! S. A* ?* P e* f2 K$ Z& Q
* V+ ~ O8 o9 D" R& _5 J. n* S3 }+ U: {' f$ J* I& \
如果您修改了For Xml Path的用法,它将为您完成转义操作,并且您无需诉诸使用Replace函数:& S; @( o; j5 U f6 Y l
, Stuff(
& i: q9 r7 N/ z+ j (% u- O7 K6 T2 B+ M) Y" @
Select '; ' + IsNull( D2.SelectedComments, '' )
) | N7 }- R$ L. m2 a: H0 o4 T From #StudentDetails As D2! F0 {2 f; H# t( t7 u; S
Where D2.Stud_PK = A.Stud_PK
- f! ~0 _- u( ~( y9 g And D2.CourseNo = A.CourseNo
# c3 q5 w4 O5 R& B$ s1 s& N And D2.Section = A.Section4 d! o% Z! I9 Q+ f
For Xml Path(''), type, b9 h; a9 k9 R! T
).value('.', 'nvarchar(max)')
- [0 |6 l5 ^& M2 D4 J , 1, 2, '') As SelectedComments |
|
|
|
|
|