【发布时间】:2020-02-06 09:09:18
【问题描述】:
我有一个 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>
谁能帮我解决这个问题?
【问题讨论】:
-
根据我的 cmets 关于您的其他问题,您必须检查
A.[business_line]中的每个值,具体取决于您有多少行可以使用在线 XML 验证器手动执行此操作,或者您可能需要找到一些自动化的方法来执行此操作。不幸的是,没有人能在没有看到数据的情况下告诉你出了什么问题。 -
如果您使用我的其他答案(即
declare @Test...)中的手动测试代码来测试这两个,您会得到什么? -
如果我这样做,它会给我正确的价值。对于第一个数据,它提供 BL2,对于第二个数据,它提供'NULL' @DaleBurrell
-
没错,所以您显示的数据与数据库中的实际数据不同。
-
Yes 也许.. 因为有超过 1000 行。
标签: sql sql-server xml sql-server-2012