[英]Return xml data from SQL query
我有一個 SQL 查詢。
SELECT convert(xml, A.[business_line]).value('(/collection/object/fields/field/value)[1]', 'varchar(3)')
from [EU_OTH_REG].[dbo].[TBL_EU_OTH_TXN_REG_RSDS] A
運行此查詢時出現錯誤。
錯誤狀態
Msg 9413, Level 16, State 1, Line 1
XML parsing: line 1, character 30, A string literal was expected
A.business_line 有 2 組值。
1) <collection><object parentid="ce57cc75-3966-478f-bf25-5e3abf716f96" parenttype="Object"><fields><field name="code"><value>BL3</value></field><field name="code"><value>BL2</value></field><field name="code"><value>BL5</value></field><field name="code"><value>BL1</value></field><field name="code"><value>BL6</value></field></fields></object></collection>
2) <collection><object parentid="ce57cc75-3966-478f-bf25-5e3abf716f96" parenttype="Object"><fields/></object></collection>
誰可以幫我這個事?
請改用try_convert() 。 但如果你有 sql server 2012 up。
SELECT try_convert(xml, A.[business_line]).value('(/collection/object/fields/field/value)[1]', 'varchar(3)')
from [EU_OTH_REG].[dbo].[TBL_EU_OTH_TXN_REG_RSDS] A
應用於您的原始查詢。
select try_convert(xml, col).value('(/collection/object/fields/field/value)[1]', 'varchar(3)')
from (
select col= Coalesce(replace(replace(A.[business_line], char(10), ''''), char(13), ''''),'''')
from [EU_OTH_REG].[dbo].[TBL_EU_OTH_TXN_REG_RSDS] A) t1
XML 中有一行或多行字符錯誤。
運行這個來確認:
SELECT convert(xml, A.[business_line])
FROM [EU_OTH_REG].[dbo].[TBL_EU_OTH_TXN_REG_RSDS] A;
如果您仍然看到錯誤,您可以像這樣使用TRY_CONVERT
或TRY_CAST
追蹤壞行。
SELECT TRY_CONVERT(xml, A.[business_line])
FROM [EU_OTH_REG].[dbo].[TBL_EU_OTH_TXN_REG_RSDS] A
WHERE TRY_CONVERT(xml, A.[business_line]) IS NULL;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.