濮阳杆衣贸易有限公司

主頁 > 知識庫 > 關(guān)于SQLServer2005的學(xué)習(xí)筆記 XML的處理

關(guān)于SQLServer2005的學(xué)習(xí)筆記 XML的處理

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

閑話少說,首先創(chuàng)建一個包含 xml 類型的數(shù)據(jù)表,其次創(chuàng)建一個 xml 文件,在服務(wù)端把 xml 文件內(nèi)容加載該數(shù)據(jù)表中。
復(fù)制代碼 代碼如下:

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

創(chuàng)建一個名為 xxx.xml 的文件,內(nèi)容如下
/*
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
復(fù)制代碼 代碼如下:

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

-- 以下為 exist() 函數(shù)在兩種環(huán)境下的用法
復(fù)制代碼 代碼如下:

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

復(fù)制代碼 代碼如下:

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 字段

標(biāo)簽:齊齊哈爾 臨滄 海北 阜陽 荊州 那曲 泰州 通化

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《關(guān)于SQLServer2005的學(xué)習(xí)筆記 XML的處理》,本文關(guān)鍵詞  關(guān)于,SQLServer2005,的,學(xué)習(xí),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《關(guān)于SQLServer2005的學(xué)習(xí)筆記 XML的處理》相關(guān)的同類信息!
  • 本頁收集關(guān)于關(guān)于SQLServer2005的學(xué)習(xí)筆記 XML的處理的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    安达市| 南陵县| 青铜峡市| 开阳县| 黄梅县| 松阳县| 遵化市| 河间市| 永平县| 日照市| 西贡区| 永川市| 深圳市| 娄烦县| 始兴县| 宁晋县| 中方县| 阳原县| 鹤峰县| 中江县| 瑞安市| 内乡县| 会泽县| 上蔡县| 台北县| 林周县| 芷江| 灵台县| 平泉县| 长春市| 彭州市| 南阳市| 科技| 石楼县| 抚远县| 松江区| 光山县| 华蓥市| 海淀区| 县级市| 额济纳旗|