如何在选择表单选择查询时跳过缺少的 XML 数据列值

问题描述

我的查询返回:

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 >

      
         

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)