declare @xml xmlset @xml='<T1><row ID=''48'' MusicAlbumID=''1'' MusicName=''愛笑的眼睛'' MusicURL="http://mp3.sogou.com/music.so?class=1&query=%B0%AE%D0%A6%B5%C4%D1%DB%BE%A6%28live%29"  Creator=''林俊杰''/> </T1>'
SELECT T.T1.value('@ID','int') as ID ,T.T1.value('@MusicAlbumID','int') as MusicAlbumID,
 T.T1.value('@MusicName','nvarchar(50)') as MusicName ,T.T1.value('@MusicURL','nvarchar(500)') as MusicURL,
 T.T1.value('@Creator','nvarchar(50)') as Creator
 FROM @xml.nodes('/T1/row') T(T1)
上面MusicURL属性的值中有一个字符(&),故报错。现在我想让它不报错,而我又不想把那个(&)字符替换为其它字符,
因为那样的话,音乐的地址就变了注:@xml得值是从程序中得到的

解决方案 »

  1.   

    declare @xml xmlset @xml='<T1><row ID="48" MusicAlbumID="1" MusicName="愛笑的眼睛"
                MusicURL="http://mp3.sogou.com/music.so?class=1&amp;query=%B0%AE%D0%A6%B5%C4%D1%DB%BE%A6%28live%29" Creator="林俊杰"/> </T1>'SELECT T.T1.value('@ID','int') as ID ,T.T1.value('@MusicAlbumID','int') as MusicAlbumID,
     T.T1.value('@MusicName','nvarchar(50)') as MusicName ,T.T1.value('@MusicURL','nvarchar(500)') as MusicURL,
     T.T1.value('@Creator','nvarchar(50)') as Creator
     FROM @xml.nodes('/T1/row') T(T1)