回答

收藏

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.&#x0D。我不知道这.&#x0D是哪里来的。我尝试`SELECT SelectedComments FROM
4 @. B$ O0 S) F. T+ {$ uStudentDetails在此之前做,但没有看到.&#x0D`。谁能告诉它可能来自哪里?
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
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则