【发布时间】:2020-01-15 08:56:12
【问题描述】:
我已经使用这个查询一年多了。在 UTF-8 XML 上使用它时效果很好。
XML 列当前是NVARCHAR(MAX) 类型,所以我必须先将其转换为XML。
SELECT REPLACE(
XML,
'<MetaData04></MetaData04>',
'<MetaData04>' + cast([XML] as XML).query(N'/BOM/BO/Documents/NumAtCard').value('.', 'varchar(30)') + '</MetaData04>'
)
FROM table1
WHERE state = 1
现在这在这个 XML 上完美运行:
<?xml version="1.0" encoding="utf-8"?>
<BOM>
<BO>
<Documents>
<NumAtCard>1234</NumAtCard>
<MetaData04>test</MetaData04>
</Documents>
</BO>
</BOM>
但不在此 XML 上:
<?xml version="1.0" encoding="iso-8859-1"?>
<BOM>
<BO>
<Documents>
<Field Name="NumAtCard" Multi="No">
<Value>1234</Value>
</Field>
<Field Name="MetaData04" Multi="No">
<Value>test</Value>
</Field>
</Documents>
</BO>
</BOM>
有没有办法在这个 ISO-8859-1 XML 上.query?
我正在使用 SQL Server Management Studio (SSMS) 2017。
提前致谢,科恩。
【问题讨论】:
标签: sql sql-server xml casting ssms