我的数据表看起来像这样,艺术家列为NVARCHAR(MAX),但保存的文本基本上是一个xml文件。
Id | Name | Surname | Title | Location | Artist |
-------------------------------------------------------------------
1 | xxx | abc | def | London | XML string in Nvarchar |
2 | xxx | abc | def | Oslo | XML string in Nvarchar |
3 | xxx | abc | def | New York | XML string in Nvarchar |
我的XML文件看起来像这样
<song category="gaming">
<title>Valentine's Day</title>
<artist-main>Fatfinger</artist-main>
<artist-featured>Slimthumb</artist-featured>
<year>2013</year>
<price>29.99</price>
<album>Gamestain</album>
<albumimg>http://download.gamezone.com/uploads/image/data/875338/halo-4.jpg</albumimg>
<songurl>http://www.youtube.com/watch?v=-J0ABq9TnCw</songurl>
我可以在artist列上使用如下所示的基于XML数据类型的SQL语句吗?
SELECT Id, Name, Surname, Title
FROM @table
WHERE Artist.value('(/artist-main)[1]','varchar(max)') = '%FatFinger%'
答案 0 :(得分:2)
如果它是有效的XML,你可以像这样投射它:
WHERE (CAST(Artist AS XML)).value('(/artist-main)[1]','varchar(max)') = 'FatFinger'
(我删除了搜索字符串周围的%符号。如果您需要它们,您是否打算使用LIKE
代替=
?)