SQL XML 类型插入操作

 

  
  
  
  
  1. --创建测试数据库  
  2. CREATE DATABASE mytest;  
  3. GO  
  4.  
  5. USE mytest;  
  6. GO  
  7.  
  8. --创建测试表  
  9. CREATE TABLE Users  
  10. (  
  11.     ID INT IDENTITY(1,1),  
  12.     UserInfo XML  
  13.  
  14. )  
  15.  
  16. /*****************插入单节点*****************************/      
  17.        
  18.     ---插入测试数据  
  19.     DECLARE @xml XML  
  20.     SET @xml='<root xmlns="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/users">  
  21.     <user>  
  22.         <userid>1</userid>  
  23.         <userName>test1</userName>  
  24.     </user>  
  25.     </root>'  
  26.     INSERT INTO Users(UserInfo)VALUES(@xml)  
  27.  
  28.    
  29.     --select * from Users  
  30.     --添加address节点,默认添加在所有节点之后  
  31.     UPDATE Users SET UserInfo.modify('insert <address>shanghai</address>   
  32.      into (/root/user)[1]')    
  33.  
  34.     SELECT  * FROM Users  
  35.  
  36.     --添加address节点,节点顺序为第一个  
  37.     UPDATE Users SET UserInfo.modify('insert <address>shanghai</address> as first 
  38.      into (/root/user)[1]')    
  39.  
  40.     SELECT  * FROM Users  
  41.  
  42.     --添加address节点,节点顺序为最后一个  
  43.     UPDATE Users SET UserInfo.modify('insert <address>shanghai</address> as last 
  44.      into (/root/user)[1]')    
  45.  
  46.     SELECT  * FROM Users  
  47.  
  48.     --添加address节点到某个节点之后  
  49.     UPDATE Users SET UserInfo.modify('insert <address>shanghai</address>   
  50.      after (/root/user/userid)[1]')    
  51.  
  52.     --添加address节点到某个节点之前  
  53.     UPDATE Users SET UserInfo.modify('insert <address>shanghai</address>   
  54.      before (/root/user/userid)[1]')    
  55.  
  56.     SELECT  * FROM Users  
  57.  
  58. ---注:[1] 代表第一个item  
  59.  
  60.  
  61. /*****************插入多节点*****************************/      
  62.  
  63.  
  64.     --添加firstName and LastName,以,分割  
  65.  
  66.     UPDATE Users SET UserInfo.modify('insert (<firstName>steven</firstName>,  
  67.                                         <lastName>shi</lastName>) into (/root/user)[1]')    
  68.       
  69.     SELECT  * FROM Users  
  70.  
  71.  
  72. /*****************插入节点属性*****************************/      
  73.    
  74.     ---在USER 节点插入ID 属性,并且值=1  
  75.     UPDATE Users SET UserInfo.modify('insert attribute ID {"1"}  
  76.                                         into (/root/user)[1]')    
  77.     SELECT  * FROM Users  
  78.  
  79.  
  80.     ---在USER 节点插入ID 属性,值为一个变量,这个应该更常用  
  81.     declare @uid float 
  82.     set @uid=0.5  
  83.     UPDATE Users SET UserInfo.modify('insert attribute UID {sql:variable("@Uid")}  
  84.                                          into (/root/user)[1]')    
  85.     SELECT  * FROM Users  
  86.  
  87.  
  88.     ---如果插入多个属性,需要用,分割  
  89.     declare @aid float,@bid float 
  90.     set @aid=0.5  
  91.     set @bid=0.6  
  92.     UPDATE Users SET UserInfo.modify('insert (attribute aid {sql:variable("@aid")},  
  93.                                               attribute bid {sql:variable("@bid")}  
  94.                                                 )  
  95.                                      into (/root/user)[1]')    
  96.     SELECT  * FROM Users  
  97.  
  98.  
  99.  
  100. /*****************插入节点注释*****************************/      
  101.    
  102.     ---insert 注释  
  103.    
  104.     UPDATE Users SET UserInfo.modify('insert  <!-- 注释 -->  
  105.                                      before (/root/user/userid[1])[1]')    
  106.     SELECT  * FROM Users  
  107.  
  108.    
  109. /*****************插入处理指令*****************************/      
  110.    
  111.     UPDATE Users SET UserInfo.modify('insert <?Program = "A.exe" ?>     
  112.                                      before (/root)[1]')    
  113.     SELECT  * FROM Users  
  114.  
  115.  
  116.  /*****************插入CDATA*****************************/      
  117.    
  118.  
  119.     UPDATE Users SET UserInfo.modify('insert <C><![CDATA[<city>北京</city> or cdata]]> </C>   
  120.                                      after (/root/user)[1]')    
  121.     SELECT  * FROM Users  
  122.  
  123.    
  124.  
  125.  /*****************插入文本*****************************/      
  126.    
  127.  
  128.     UPDATE Users SET UserInfo.modify('insert  text{"插入文本"as first 
  129.                                      into (/root/user)[1]')    
  130.     SELECT  * FROM Users  
  131.  
  132.    
  133.    
  134.  
  135.  /*****************根据 if 条件语句进行插入*****************************/      
  136.    
  137.     ---判断属性值  
  138.     UPDATE Users SET UserInfo.modify('insert  if(/root/user[@ID=1]) then (<tel>888888</tel>)  
  139.                                         else (<qq>66666</qq>)  
  140.                                      into (/root/user)[1]')    
  141.     SELECT  * FROM Users  
  142.  
  143.     ----判断节点Value  
  144.     UPDATE Users SET UserInfo.modify('insert  if(/root/user[firstName="steven1"]) then (<tel>1111</tel>)  
  145.                                         else (<qq>2222</qq>)  
  146.                                      into (/root/user)[1]')    
  147.     SELECT  * FROM Users  
  148.  
  149.    
  150.  
  151.     ----判断user 节点数是否小于等于10  
  152.     UPDATE Users SET UserInfo.modify('insert  if (count(/root/user)<=10) then element user { "This is a new user" }  
  153.                                         else () as last 
  154.                                      into (/root)[1]')    
  155.     SELECT  * FROM Users  
  156.  
  157.    
  158.  
  159.  
  160.  /*****************将节点插入类型化的 xml 列中*****************************/      
  161.        
  162.     UPDATE Users SET UserInfo.modify('   
  163.                 declare namespace UI="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/users";  
  164.                  insert <UI:user>  
  165.                             <UI:firstName>steven2</UI:firstName>  
  166.                         </UI:useras first 
  167.                  into (/UI:root)[1]')    
  168.     SELECT  * FROM Users  
  169.  
  170.    
  171.  
  172.     UPDATE Users SET UserInfo.modify('   
  173.                 declare namespace UI="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/users";  
  174.                  insert attribute ID { "55" }        
  175.                            
  176.                  into (/UI:root/UI:user)[1]')    
  177.     SELECT  * FROM Users  
  178.  
  179.  
  180.  

 

你可能感兴趣的:(sql,数据库,xml,职场,休闲,类型插入操作)