DB2 9 原生支持 XQuery 1.0 和 SQL/XML (ISO 9075-14) 兩大標準查詢語言,可無縫在 SQL 中嵌入 XPath/XQuery 表達式,或純 XQuery 查詢 XML 列。掌握兩者語法、轉換函數、性能優化是高效開發 XML 應用的關鍵。
xquery
for $c in db2-fn:xmlcolumn('CUSTOMER.INFO')/customer
where $c/address/city = 'Shanghai'
return $c/name
db2-fn:xmlcolumn / db2-fn:sqlquery 訪問 XML 列。| 函數 | 用途 | 示例 |
|---|---|---|
| XMLQUERY | 提取 XML 片段,返回 XML 類型 | XMLQUERY('$d/order/item' PASSING doc AS $d) |
| XMLEXISTS | 判斷 XPath 是否匹配,返回布爾,用於 WHERE | XMLEXISTS('$d/order[status="shipped"]' PASSING doc AS $d) |
| XMLTABLE | 將 XML 節點映射為關係表行列,支持 JOIN | XMLTABLE('$d/order/item' PASSING doc AS $d COLUMNS sku VARCHAR(20) PATH '@sku', qty INT PATH 'quantity') |
| XMLELEMENT, XMLATTRIBUTES, XMLFOREST, XMLAGG | 從關係數據構造 XML | XMLELEMENT(NAME "order", XMLATTRIBUTES(id AS "id"), XMLFOREST(cust, total)) |
| XMLPARSE, XMLSERIALIZE | 字符串<->XML 類型轉換 | XMLPARSE(DOCUMENT '') |
declare default element namespace "..."; 或在路徑中使用 *:local-name。xs:integer(), xs:date() 避免字符串比較錯誤。fn:empty()、fn:exists() 正確判斷節點缺失。DB2 9 pureXML 提供了標準、強大、可優化的 XML 查詢能力。開發者應熟練掌握 XQuery 與 SQL/XML 互補使用,結合 XML 索引、統計信息、類型系統,構建高性能、可維護的 XML 應用。