如何在 SQL Server 中获取 xml 列的值

How to get value of xml column in SQL Server

提问人:Shakeer Hussain 提问时间:9/19/2023 更新时间:9/19/2023 访问量:37

问:

如何获取列的XML值?

 SELECT PaymentMethodDetail.value('(/paymentMethodDetail/EFTPaymentDetails/AccountType/text())[0]','varchar(30)') as AccounType,* FROM paymentTable

<PaymentMethodDetail>
  <EFTPaymentDetails paymentMethodCode="">
    <AccountName>RVQNX BASAD</AccountName>
    <AccountType>S</AccountType>
  </EFTPaymentDetails>
</PaymentMethodDetail>

它返回 null 值而不是 S

SQL XML 解析 SQLXML

评论

1赞 Yitzhak Khabinsky 9/19/2023
XML 区分大小写,您需要使用 [1]
1赞 Yitzhak Khabinsky 9/19/2023
在提出问题时,您需要提供一个最小的可重现示例:(1) DDL 和样本数据填充,即 CREATE 表加上 INSERT T-SQL 语句。(2)你需要做什么,即逻辑和你的代码尝试在T-SQL中实现它。(3) 期望的输出,基于上面 #1 中的示例数据。(4) 您的 SQL Server 版本 (SELECT @@version;)。

答:

0赞 zip 9/19/2023 #1

试试这个:

CREATE TABLE paymentTable (
    PaymentMethodDetail XML
);

INSERT INTO paymentTable (PaymentMethodDetail)
VALUES
('<PaymentMethodDetail>
  <EFTPaymentDetails paymentMethodCode="">
    <AccountName>RVQNX BASAD</AccountName>
    <AccountType>S</AccountType>
  </EFTPaymentDetails>
</PaymentMethodDetail>')

SELECT PaymentMethodDetail.value('(/PaymentMethodDetail/EFTPaymentDetails/AccountType/text())[1]', 'varchar(30)') as AccountType, * 
FROM paymentTable

将 XPath 表达式中的索引从 [0] 更改为 [1]

评论

0赞 Yitzhak Khabinsky 9/19/2023
没有提供最小的可重现示例。我怎样才能测试你的答案?