【发布时间】:2019-08-02 10:15:02
【问题描述】:
我有一个这样的 XML:
<User LoginName="yes" Signature="A" MobilePhone="yes" />
我使用以下查询:
SELECT field.value('/User[@LoginName=1][1]','varchar(max)')
FROM table
我希望 LoginName 的输出为“yes”
【问题讨论】:
标签: sql-server sqlxml
我有一个这样的 XML:
<User LoginName="yes" Signature="A" MobilePhone="yes" />
我使用以下查询:
SELECT field.value('/User[@LoginName=1][1]','varchar(max)')
FROM table
我希望 LoginName 的输出为“yes”
【问题讨论】:
标签: sql-server sqlxml
您可以使用以下查询来获得您的预期结果:
SELECT R.V.value('@LoginName[1]', 'varchar(max)') AS LoginValue
FROM TestTable AS T
OUTER APPLY T.data.nodes('User[1]') as R(V)
带有一些数据的示例执行:
DECLARE @TestTable TABLE (data XML);
INSERT INTO @TestTable (data) VALUES
('<User LoginName="yes" Signature="A" MobilePhone="yes" />
<User LoginName="no" Signature="B" MobilePhone="NA" />');
SELECT R.V.value('@LoginName[1]', 'varchar(max)') AS LoginValue
FROM @TestTable AS T
OUTER APPLY T.data.nodes('User[1]') as R(V)
结果会是
LoginValue
----------
yes
【讨论】: