【问题标题】:Querying on XML issues查询 XML 问题
【发布时间】: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


    【解决方案1】:

    /BOM/BO/Documents/NumAtCard需要改成

    /BOM/BO/Documents/Field[@Name="NumAtCard"]/Value
    

    【讨论】:

    • 完美,谢谢 Choroba!你让我开心!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多