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- }
.
。我不知道这.
是哪里来的。我尝试`SELECT SelectedComments FROM
' b' D; p0 P6 s6 K7 FStudentDetails在此之前做,但没有看到.
`。谁能告诉它可能来自哪里?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 |
|
|
|
|
|