校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 關于SQLServer2005的學習筆記 XML的處理

關于SQLServer2005的學習筆記 XML的處理

熱門標簽:江西穩定外呼系統供應商 智能電銷機器人教育 奧維地圖標注字體大小修改 高德地圖標注電話怎么沒了 孝感銷售電銷機器人廠家 電話機器人錄音師薪資 無錫梁溪公司怎樣申請400電話 中國地圖標注省份用什么符號 北京智能外呼系統供應商家
關于 xml ,難以理解的不是 SQLServer 提供的函數,而是對 xml 本身的理解,看似很簡單的文件格式,處理起來卻是非常困難的。本文只是初探一下而已。
詳見 SQLServer 聯機幫助:
主題
說明
query() 方法( xml 數據類型)
此方法用于對 XML 實例進行查詢。
value() 方法( xml 數據類型)
此方法用于從 XML 實例檢索 SQL 類型的值。
exist() 方法( xml 數據類型)
此方法用于確定查詢是否返回非空結果。
modify() 方法( xml 數據類型)
此方法用于指定 XML DML 語句以執行更新。
nodes() 方法( xml 數據類型)
此方法用于將 XML 拆分成多行以將 XML 文檔的組成部分傳播到行集中。

閑話少說,首先創建一個包含 xml 類型的數據表,其次創建一個 xml 文件,在服務端把 xml 文件內容加載該數據表中。
復制代碼 代碼如下:

CREATE TABLE VisioXML
(
ID INT,
Doc XML
);
GO

創建一個名為 xxx.xml 的文件,內容如下
/*
ROOT>
ROW>
ID>1/ID>
NAME SEX="MALE">WBQ/NAME>
/ROW>
ROW>
ID>2/ID>
NAME SEX="FEMALE">CZH/NAME>
/ROW>
/ROOT>
*/
INSERT INTO VisioXML(ID,Doc)
SELECT 4,* FROM OPENROWSET(BULK 'e:\xxx.xml',SINGLE_BLOB) AS x;

-- 以下為 value() 和 query() 的用法
--SELECT * FROM VisioXML WHERE ID=4
復制代碼 代碼如下:

SELECT
Doc.value('(/ROOT/ROW[1]/ID/text())[1]','int') RootRowID1, -- 第一行 ID 的值,并且轉換為 int 類型
Doc.value('(/ROOT/ROW[2]/ID/text())[1]','int') RootRowID2, -- 第二行 ID 的值,并且轉換為 int 類型
Doc.value('(/ROOT/ROW[1]/NAME/text())[1]','varchar(20)') RootRowNAME1, -- 第一行 NAME 的值,并且轉換為 VARCHAR 類型
Doc.value('(/ROOT/ROW[1]/NAME/@SEX)[1]','varchar(20)') RootRowNAME1SEX, -- 第一行 NAME 中 SEX 屬性的值,并且轉換為 VARCHAR 類型
Doc.query('/ROOT') Root, --ROOT 下的所有 XML 內容,類型為 XML
Doc.query('/ROOT/ROW[1]') RootRow1, --ROOT 下第一行所有的 XML 內容,類型為 XML
Doc.query('/ROOT/ROW[2]') RootRow2 --ROOT 下第二行所有的 XML 內容,類型為 XML
FROM VisioXML
WHERE ID=4

-- 以下為 exist() 函數在兩種環境下的用法
復制代碼 代碼如下:

SELECT
Doc.exist('/ROOT/ROW[1]/NAME[(@SEX cast as xs:string?) = xs:string("MALE")]') Row1EQStringMale,
Doc.exist('/ROOT/ROW[1]/NAME[(@SEX cast as xs:string?) = "MALE"]') Row1EQMale,
Doc.exist('/ROOT/ROW[1]/ID[(text()[1] cast as xs:float?) = xs:float(1)]') Row1EQfloat1,
Doc.exist('/ROOT/ROW[2]/ID[(text()[1] cast as xs:float?) = 2]') Row1EQ1
FROM VisioXML
WHERE ID=4

復制代碼 代碼如下:

SELECT ID,Doc
FROM VisioXML
WHERE ID=4
AND Doc.exist('/ROOT/ROW[1]/NAME[(@SEX)]')=1 -- 第一行 NAME 中存在 SEX 屬性
--AND Doc.exist('/ROOT/ROW[1]/NAME[not(@SEX)]')=1 -- 第一行 NAME 中不存在 SEX 屬性
--AND Doc.exist('/ROOT/ROW[1][not(ID/*)]')=1 -- 第一行不存在 ID 字段
--AND Doc.exist('/ROOT/ROW[1][(ID/*)]')=1 -- 第一行存在 ID 字段

標簽:齊齊哈爾 臨滄 海北 阜陽 荊州 那曲 泰州 通化

巨人網絡通訊聲明:本文標題《關于SQLServer2005的學習筆記 XML的處理》,本文關鍵詞  關于,SQLServer2005,的,學習,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《關于SQLServer2005的學習筆記 XML的處理》相關的同類信息!
  • 本頁收集關于關于SQLServer2005的學習筆記 XML的處理的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 万源市| 芜湖县| 威远县| 疏附县| 建宁县| 贵州省| 忻城县| 民勤县| 星座| 富宁县| 海伦市| 韶山市| 祁门县| 论坛| 临海市| 玛纳斯县| 且末县| 安义县| 盘山县| 东光县| 泌阳县| 黔江区| 兴山县| 天全县| 辽宁省| 岑溪市| 宜兰县| 渭源县| 许昌市| 眉山市| 陆河县| 册亨县| 汉中市| 吉木萨尔县| 翁牛特旗| 沾化县| 渭源县| 永春县| 开阳县| 阿图什市| 常德市|