問題

這個問題已經有一個答案:

  • 2001年12月31日終了的兩年期收入和支出及準備金和基金結餘變動報表 如何查詢SQL Server XML列中的值 2001年12月31日終了的兩年期收入和支出及準備金和基金結餘變動報表 7個答案 2001年12月31日終了的兩年期收入和支出及準備金和基金結餘變動報表 2001年12月31日終了的兩年期收入和支出及準備金和基金結餘變動報表

我目前在SQL表中使用XML資料型別

我的資料表看起來像這樣

 Id | Name | Surname | Title  | Location | Artist |
-------------------------------------------------------
1  | xxx  | abc     | def    | London   | XML    |
2  | xxx  | abc     | def    | Oslo     | XML    |
3  | xxx  | abc     | def    | New York | XML    |
 

我的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>
 

現在根據藝術家獲取記錄,我使用的查詢是

 SELECT 
Id, Name, Surname, Title 
FROM 
DATA 
WHERE 
Artist Like '%Fatfinger%' -- (this is user input)
 

這是在SQL中查詢XML資料的正確方法,或者SQL中是否有可以處理XML的內建函式.我是SQL的新手.

  最佳答案

嘗試這個:

 declare @table table (
Id int, Name varchar(50), Surname varchar(50), 
Title  varchar(50), Location varchar(50), Artist xml)

insert into @table (Id, Name, Surname, Title, Location , Artist )
values(1, 'xxx', 'abc', 'def', 'London', '<song category="gaming"></song>
<title>Valentines 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>')

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

  相同標籤的其他問題

sqlsql-serverxmlsql-server-2012