<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%')
总而言之,我需要对每个项目进行参数比较,并且不想重复
'//语言[@名称= “RU-茹”]'
在每种情况下
答案 0 :(得分: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%'