0

私のデータテーブルは、artist 列が 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>

次の XML データ型ベースの SQL ステートメントを artist 列で使用できますか?

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

1 に答える 1

2

有効な XML の場合は、次のようにキャストできます。

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

LIKE(検索文字列の % 記号を削除しました。必要な場合は、代わりに?を使用するつもり=ですか?)

于 2013-05-29T16:36:12.500 に答える