2013-05-29 16 views
0

我的數據表看起來像這樣,藝術家列爲NVARCHAR(MAX),但保存的文本基本上是一個XML文件。您可以在xml中使用基於xml數據類型的語句作爲mssql中的nvarchar數據類型存儲嗎?

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> 

我可以使用藝術家欄下方所示的XML數據類型的基於SQL語句?

SELECT Id, Name, Surname, Title 
FROM @table 
WHERE Artist.value('(/artist-main)[1]','varchar(max)') = '%FatFinger%' 

回答

2

,如果它是有效的XML,你可以只投它像這樣:

WHERE (CAST(Artist AS XML)).value('(/artist-main)[1]','varchar(max)') = 'FatFinger' 

(我刪除了在你的搜索字符串%跡象,如果需要的話,你也許打算使用LIKE。而不是=?)

+0

@ Sebastion感謝男人。我打算使用像。 –