婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 關于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的處理的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 吕梁市| 来宾市| 高青县| 尉犁县| 大石桥市| 布拖县| 铁岭市| 迁西县| 天门市| 汉阴县| 寿光市| 江城| 江川县| 谷城县| 北京市| 达日县| 五常市| 景宁| 霍林郭勒市| 武宁县| 东安县| 莲花县| 大田县| 德兴市| 大安市| 宜宾县| 射洪县| 渑池县| 抚远县| 新建县| 西贡区| 沂水县| 道孚县| 繁昌县| 新营市| 津南区| 金山区| 建阳市| 固安县| 灵寿县| 镇巴县|