我的查询返回:
<块引用>Msg 9421,XML 解析:非法名称字符错误
我需要跳过下表中没有数据的行
SELECT
ps.person_num,
q1.r1.value(‘.’,’varchar(50)') as id,
q2.r2.value(‘.’,'varchar(50)’)) as name
FROM
persons ps
CROSS APPLY
(SELECT CAST(SELECT CAST(sd.data AS xml)) AS p1(p1))
CROSS APPLY
p1.p1.nodes(‘/person_data/person_id’) q1(r1)
CROSS APPLY
p1.p1.nodes(‘/person_data/person_name’) q2(r2)
Persons
表有两列:
Person_num data (text column)
1 <?xml version="1.0" encoding="UTF-8"?> <person_data>
<person_id>52<person_id/> <person_name>varna</person_name> </person_data >
2 <?xml version="1.0" encoding="UTF-8"?><?>?</?>
3 <?xml version="1.0" encoding="UTF-8"?> <person_data > <person_id>53<person_id/>
<person_name>mala</person_name></ person_data >
4 <?xml version="1.0" encoding="UTF-8"?> < person_data > <person_id>54<person_id/>
<person_name>nayan</person_name> </person_data >
5 <?xml version="1.0" encoding="UTF-8"?><?>?</?>
6 <?xml version="1.0" encoding="UTF-8"?> < person_data > <person_id>55<person_id/>
<person_name>tara</person_name></person_data >
7 <?xml version="1.0" encoding="UTF-8"?> < person_data > <person_id>56<person_id/>
<person_name>janu</person_name> </person_data >