SQL Server從2005起開始支持xml類型,這個數據類型對於后期的改變非常有用。一對多的關系在后期變成了多對多的關系,XML類型就是一個不錯的選擇。
1、創建測試數據
創建表
--創建表,包含Xml類型列 CREATE TABLE Person ( Id int, Info xml )
插入測試數據
--插入3條測試數據 INSERT Person VALUES(1,'<Person><ID>1</ID><Name>劉備</Name></Person>') INSERT Person VALUES(2,'<Person><ID>2</ID><Name>關羽</Name></Person>') INSERT Person VALUES(3,'<Person><ID>3</ID><Name>張飛</Name></Person>')
2、查詢節點內容
query()方法
--查詢節點內容query()方法 SELECT Id,Info.query('(/Person/Name)[1]') FROM Person WHERE ID = 2
3、查詢值
value()方法
--查詢值value()方法 SELECT Id,Info.value('(/Person/Name)[1]','VARCHAR(50)') FROM Person WHERE ID = 2 SELECT * FROM Person WHERE Info.value('(/Person/Name)[1]','VARCHAR(50)') = '張飛'
4、查詢是否存在
exist()方法
--查詢是否存在 exist()方法 SELECT * FROM Person WHERE Info.exist('(/Person/Name)[1]') = 1
5、查詢節點
nodes()方法
--查詢節點
SELECT T2.Loc.query('.') FROM Person CROSS APPLY Info.nodes('/Person/Name') as T2(Loc)
6、修改XML
modify()方法
1、增加節點
--modify(insert)增加節點 UPDATE Person SET Info.modify(' insert <Age>25</Age> into (/Person)[1]' ) WHERE Id = 3
2、刪除節點
-- 刪除節點內容(xQuery知識,沒有text()就直接刪除節點) UPDATE Person SET Info.modify(' delete (/Person)[1]/Age/text()' ) where ID = 3