回答

收藏

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 \
.&#x0D。我不知道这.&#x0D是哪里来的。我尝试`SELECT SelectedComments FROM
7 J7 a' M% K, P3 h- f, x" j  y* C2 Z1 JStudentDetails在此之前做,但没有看到.&#x0D`。谁能告诉它可能来自哪里?- 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
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则