DB2 Viper 的混合架構雖與舊版大異,但若熟悉 SQL,即可迅速將技能轉移至原生 XML 資料處理。本文示範如何使用 SQL 與 SQL/XML 查詢 DB2 XML 欄位資料;後續文章將探討 XQuery 支援與雙語查詢技巧。
查詢範例基於「DB2 Viper 快速入門」中建立的 items 與 clients 表:
create table items (
id int primary key not null,
brandname varchar(30),
itemname varchar(30),
sku int,
srp decimal(7,2),
comments xml
);
create table clients (
id int primary key not null,
name varchar(50),
status varchar(10),
contactinfo xml
);
圖 1 與圖 2 分別展示 items.comments 與 clients.contactinfo 欄位的範例 XML 文件結構,後續查詢將引用其中特定元素。


所有查詢均可透過 DB2 命令列處理器或 Control Center 的 Command Editor 互動執行。啟動 Control Center,選擇 Tools > Command Editor,於上方面板輸入查詢,點擊綠色箭頭執行,結果顯示於下方面板或 Query results 標籤。

即使 SQL 基礎薄弱,也能輕鬆查詢 XML 資料。範例:
-- 查詢 clients 表全部內容(含 XML 欄位)
select * from clients;
-- 篩選 Gold 等級客戶的 ID、姓名與聯繫資訊
select id, name, contactinfo
from clients
where status = 'Gold';
亦可基於此類查詢建立視圖:
create view goldview as
select id, name, contactinfo
from clients
where status = 'Gold';
純 SQL 僅能擷取完整 XML 文件,無法指定基於 XML 的查詢謂詞、擷取文件片段或特定元素值(如單獨取得 Gold 客戶的 email、或郵遞區號 95116 的客戶姓名)。若需對 XML 片段進行投影、限制、聯結、彙總或排序,必須使用 SQL/XML、XQuery 或兩者結合。
SQL/XML 為 SQL 與 XML 搭橋,屬 SQL 標準一部分,允許在 SQL 陳述式中嵌入 XQuery 或 XPath 運算式。XPath 用於導航 XML 文件發現元素或屬性,XQuery 包含 XPath 支援。
關鍵提醒: XQuery/XPath 運算式區分大小寫。引用 zip 的查詢不適用於 ZIP 或 Zip 元素,這與 SQL 不區分欄位名稱大小寫不同。
DB2 Viper 提供 15 種以上 SQL/XML 函數,可搜尋 XML 特定資料、轉換傳統與 XML 資料格式等。本文聚焦常見查詢挑戰,後續將深入 XQuery 與混合查詢。