如何在没有节点的情况下从 XML 查询值?
How to query values from XML without nodes?
我有一个 XML 这样的:
<User LoginName="yes" Signature="A" MobilePhone="yes" />
我使用以下查询:
SELECT field.value('/User[@LoginName=1][1]','varchar(max)')
FROM table
我希望 LoginName 的输出是 "yes"
您可以使用以下查询来获得预期结果:
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
我有一个 XML 这样的:
<User LoginName="yes" Signature="A" MobilePhone="yes" />
我使用以下查询:
SELECT field.value('/User[@LoginName=1][1]','varchar(max)')
FROM table
我希望 LoginName 的输出是 "yes"
您可以使用以下查询来获得预期结果:
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