0

XML

<Data>
  <Language Name="ru-Ru">
    <Item Id="1">value</Item>
    <Item Id="2">value2</Item>
  </Language>
</Data>

単純にクエリを実行するために、このように実行することは可能ですか:

SELECT id, 
       userId, 
       data.query('//Language[@Name="ru-Ru"]') AS myxml
  FROM UserData
 WHERE (myxml.query('//Item[@Id="9"]') like '%v%')

全体として、各アイテムのパラメーター比較が必要であり、繰り返したくありません

'//Language[@Name="ru-Ru"]'

それぞれの条件で

4

1 に答える 1

2

where 句で別名列を再利用することはできません。cross applyやりたいことに使えます。そして、使用できるように where 句をキャストする必要がありますlike

select
  id, 
  userId, 
  myxml
from @T
  cross apply
    (select data.query('//Language[@Name="ru-Ru"]')) as lang(myxml)
where cast(myxml.query('//Item[@Id="9"]') as varchar(max)) like '%v%'
于 2011-04-09T19:53:45.290 に答える