0
次のSQL Server(バージョン2008)コード変数名と同じ名前の属性を選択するにはどうすればよいですか?
declare @x xml = '
<PKs>
<Column Name="a" />
<Column Name="b" />
</PKs>
<Selected>
<row a="444010" b="2" />
<row a="444012" b="3" />
<row a="444003" b="2" />
<row a="444009" b="4" />
<row a="444002" b="3" />
<row a="444005" b="1" />
</Selected>'
declare @s nvarchar(max) = @x.query('
for $r in /Selected/row
return <s>({
for $k in /PKs/Column
return <s>{data($k/@Name)} = {data($r[.=$k/@Name])} and </s>}1=1) or
</s>').value('.', 'nvarchar(max)')
print @s
戻り
(a = and b = and 1=1) or (a = and b = and 1=1) or (a = and b = and 1=1) or (a = and b = and 1=1) or (a = and b = and 1=1) or (a = and b = and 1=1) or
期待される結果は、問題はラインreturn <s>{data($k/@Name)} = {data($r[.=$k/@Name])} and </s>}1=1) or
である
(a = 444010 and b = 2 and 1=1) or (a = 444012 and b = 3 and 1=1) or (a = 444003 and b = 2 and 1=1) or (a = 444009 and b = 4 and 1=1) or (a = 444002 and b = 3 and 1=1) or (a = 444005 and b = 1 and 1=1) or
ですが、私は選択する必要があります値は$r[.=$k/@Name]
の代わりに$r/@($k/@Name)
(構文エラーがあります)です。