Sql server 变量附近的语法错误,循环中应为步骤表达式(XQuery,SQL Server) DECLARE@x xml= ' '
我想为4级(C,D)上的每个标记获取祖先B(idB)的属性值 例如:Sql server 变量附近的语法错误,循环中应为步骤表达式(XQuery,SQL Server) DECLARE@x xml= ' ',sql-server,xml,tsql,xquery,Sql Server,Xml,Tsql,Xquery,我想为4级(C,D)上的每个标记获取祖先B(idB)的属性值 例如: DECLARE @x xml = '<A> <B name="235"> <A1> <C id="1.1"/> <D id="1.2" /> </A1> </B> <B name="535"> <A1>
DECLARE @x xml =
'<A>
<B name="235">
<A1>
<C id="1.1"/>
<D id="1.2" />
</A1>
</B>
<B name="535">
<A1>
<C id="2.1"/>
<D id="2.2" />
</A1>
</B>
</A>'
DECLARE @x xml =
N'<A>
<B name="235">
<A1>
<C id="1.1"/>
<D id="1.2" />
</A1>
</B>
<B name="535">
<A1>
<C id="2.1"/>
<D id="2.2" />
</A1>
</B>
</A>';
SELECT @x.query('
for $b in /A/B/A1/*
return <node tag="{local-name($b)}">
<id>{data($b/@*[1])}</id>
<idB>{data($b/../../@name)}</idB>
</node>
');
1.1
235
1.2
235
2.1
535
2.2
535
我在SQL Server中使用XQuery:
<node tag="C">
<id>1.1</id>
<idB>235</idB>
</node>
<node tag="D">
<id>1.2</id>
<idB>235</idB>
</node>
<node tag="C">
<id>2.1</id>
<idB>535</idB>
</node>
<node tag="D">
<id>2.2</id>
<idB>535</idB>
</node>
选择@x.query('for$b in/A/b/A1/*
返回
{data($b/@*[1])}
{data(//logu[.//$b]/@*[1])}
')
但是我犯了一个错误
“$b”附近出现语法错误,应为步骤表达式
请尝试以下XQuery SQL
DECLARE@x xml=
不
';
选择@x.query('
A/b/A1中的b美元/*
返回
{data($b/@*[1])}
{data($b/../../@name)}
');
输出
1.1
235
1.2
235
2.1
535
2.2
535
DECLARE @x xml =
N'<A>
<B name="235">
<A1>
<C id="1.1"/>
<D id="1.2" />
</A1>
</B>
<B name="535">
<A1>
<C id="2.1"/>
<D id="2.2" />
</A1>
</B>
</A>';
SELECT @x.query('
for $b in /A/B/A1/*
return <node tag="{local-name($b)}">
<id>{data($b/@*[1])}</id>
<idB>{data($b/../../@name)}</idB>
</node>
');
<node tag="C">
<id>1.1</id>
<idB>235</idB>
</node>
<node tag="D">
<id>1.2</id>
<idB>235</idB>
</node>
<node tag="C">
<id>2.1</id>
<idB>535</idB>
</node>
<node tag="D">
<id>2.2</id>
<idB>535</idB>
</node>