我之前没有在数据库中使用过XML,所以我需要一些帮助。 我需要从XML中获取name等于“sv-SE”的值,以获取多行。
XML看起来像这样:
第1行
<cultures>
<culture name="sv-SE">Sverige</culture>
<culture name="en-GB">Sweden</culture>
</cultures>
第2行
<cultures>
<culture name="sv-SE">Norge</culture>
<culture name="en-GB">Norway</culture>
</cultures>
此查询的预期输出为
Sverige
Norge
当名称为“sv-SE”时
select tblCountry.name.?? --XmlColumn
from tblCountry
答案 0 :(得分:3)
declare @T table
(
ID int identity,
XMLCol xml
)
insert into @T values
('<cultures>
<culture name="sv-SE">Sverige</culture>
<culture name="en-GB">Sweden</culture>
</cultures>')
insert into @T values
('<cultures>
<culture name="sv-SE">Norge</culture>
<culture name="en-GB">Norway</culture>
</cultures>')
select XMLCol.value('(/cultures/culture[@name="sv-SE"])[1]', 'varchar(20)')
from @T
如果您想要不同的语言而不重写查询,可以使用sql:variable
功能。
declare @Lang varchar(5)
set @Lang = 'sv-SE'
select XMLCol.value('(/cultures/culture[@name=sql:variable("@Lang")])[1]', 'varchar(20)')
from @T
答案 1 :(得分:0)
对我来说已经很久了...... 试试:
SELECT xmlCol.query('cultures//culture[@name=sv-SE]')
FROM myTable