本次演示,学会了元素本身(.)以及LIKE的操作。
宣告一个xml的变量@xml并赋值给它。
DECLARE @xml XML = '
<Devs>
<lang name="VB.NET"/>
<lang name="C#.NET"/>
<lang name="Java" />
<lang name="Javascript" />
<lang name="ASP.NET" />
</Devs>
'
<Devs>
<lang name="VB.NET"/>
<lang name="C#.NET"/>
<lang name="Java" />
<lang name="Javascript" />
<lang name="ASP.NET" />
</Devs>
'
然后,我们可以使用LIKE操作,过滤到我们需要的语言,例如想查找出属性name带有"v"的记录。
1 SELECT
2 lang = L.n.value('(.)','NVARCHAR(MAX)')
3 FROM @xml.nodes('/Devs/lang/@name') L(n)
4 WHERE L.n.value('(.)','NVARCHAR(MAX)') LIKE '%v%'
2 lang = L.n.value('(.)','NVARCHAR(MAX)')
3 FROM @xml.nodes('/Devs/lang/@name') L(n)
4 WHERE L.n.value('(.)','NVARCHAR(MAX)') LIKE '%v%'
上面代码中的2行,可以写成L.n.value('(.)','NVARCHAR(MAX)') AS [lang],另外(.)代表的是'/Devs/lang/@name'属性的本身。
谓词LIKE是用来检查字符或字段值是否与指定的模式(pattern)匹配。
查询结果: