Để xử lý các giá trị của kiểu dữ liệu
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified1, PostgreSQL cung cấp các hàm
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified2 và
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified3, đánh giá XPath 1. 0 biểu thức và hàm bảng
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified4
XMLTABLE
[ [XMLNAMESPACES
[namespace_uri
AS
namespace_name
[, ...] ], ]row_expression
PASSING
[BY
{REF
|VALUE
}]document_expression
[BY
{REF
|VALUE
}]COLUMNS
name
{type
[PATH
column_expression
] [DEFAULT
default_expression
] [NOT NULL
|NULL
] |FOR ORDINALITY
} [, ...] ] →setof record
Biểu thức
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified5 tạo ra một bảng dựa trên giá trị XML, bộ lọc XPath để trích xuất các hàng và một tập hợp các định nghĩa cột. Mặc dù nó giống với một hàm về mặt cú pháp, nhưng nó chỉ có thể xuất hiện dưới dạng một bảng trong mệnh đề
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified6 của truy vấn
Mệnh đề tùy chọn
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified0 cung cấp một danh sách các định nghĩa không gian tên được phân tách bằng dấu phẩy, trong đó mỗi
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified1 là một biểu thức
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified2 và mỗi
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified3 là một định danh đơn giản. Nó chỉ định các không gian tên XML được sử dụng trong tài liệu và bí danh của chúng. Thông số không gian tên mặc định hiện không được hỗ trợ
Đối số
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified4 được yêu cầu là một XPath 1. 0 [được cho là
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified2] được đánh giá, chuyển giá trị XML
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified6 làm mục ngữ cảnh của nó, để thu được một tập hợp các nút XML. Các nút này là thứ mà
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified5 chuyển đổi thành các hàng đầu ra. Sẽ không có hàng nào được tạo nếu
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified6 là null, cũng như nếu
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified4 tạo ra một tập hợp nút trống hoặc bất kỳ giá trị nào khác ngoài tập hợp nút
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified6 cung cấp mục ngữ cảnh cho
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified4. Nó phải là một tài liệu XML được định dạng tốt; . Các mệnh đề
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified22 và
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified23 được chấp nhận nhưng bị bỏ qua, như đã thảo luận trong Phần D. 3. 2
Trong tiêu chuẩn SQL, hàm
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified5 đánh giá các biểu thức trong ngôn ngữ Truy vấn XML, nhưng PostgreSQL chỉ cho phép XPath 1. 0 biểu thức, như đã thảo luận trong Phần D. 3. 1
Mệnh đề
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified25 bắt buộc chỉ định [các] cột sẽ được tạo trong bảng đầu ra. Xem tóm tắt cú pháp ở trên để biết định dạng. Một tên được yêu cầu cho mỗi cột, cũng như một kiểu dữ liệu [trừ khi ____126 được chỉ định, trong trường hợp đó, kiểu ____127 là ẩn]. Các mệnh đề đường dẫn, mặc định và vô hiệu là tùy chọn
Một cột được đánh dấu
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified26 sẽ được điền bằng các số hàng, bắt đầu bằng 1, theo thứ tự các nút được lấy từ tập hợp nút kết quả của
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified4. Nhiều nhất một cột có thể được đánh dấu
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified26
Ghi chú
Xpath 1. 0 không chỉ định thứ tự cho các nút trong tập hợp nút, vì vậy mã dựa trên thứ tự cụ thể của kết quả sẽ phụ thuộc vào việc triển khai. Thông tin chi tiết có thể được tìm thấy trong Phần D. 3. 1. 2
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified01 cho một cột là XPath 1. 0 được ước tính cho mỗi hàng, với nút hiện tại từ kết quả
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified4 làm mục ngữ cảnh của nó, để tìm giá trị của cột. Nếu không có
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified01, thì tên cột được sử dụng làm đường dẫn ẩn
Nếu biểu thức XPath của cột trả về giá trị không phải XML [được giới hạn ở chuỗi, boolean hoặc double trong XPath 1. 0] và cột có loại PostgreSQL khác với
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified1, cột sẽ được đặt như thể bằng cách gán biểu diễn chuỗi của giá trị cho loại PostgreSQL. [Nếu giá trị là một boolean, biểu diễn chuỗi của nó được coi là
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified05 hoặc
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified06 nếu loại của cột đầu ra là số, nếu không thì là
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified07 hoặc
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified08. ]
Nếu biểu thức XPath của một cột trả về một tập hợp các nút XML không trống và loại PostgreSQL của cột là
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified1, thì cột đó sẽ được chỉ định chính xác kết quả của biểu thức, nếu cột đó ở dạng tài liệu hoặc nội dung
Kết quả không phải XML được gán cho cột đầu ra
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified1 tạo ra nội dung, một nút văn bản duy nhất có giá trị chuỗi của kết quả. Một kết quả XML được gán cho một cột thuộc bất kỳ loại nào khác có thể không có nhiều hơn một nút hoặc sẽ xảy ra lỗi. Nếu có chính xác một nút, cột sẽ được đặt như thể bằng cách gán giá trị chuỗi của nút [như được xác định cho XPath 1. 0
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified11] thành loại PostgreSQL
Giá trị chuỗi của một phần tử XML là phép nối, theo thứ tự tài liệu, của tất cả các nút văn bản chứa trong phần tử đó và phần tử con của nó. Giá trị chuỗi của một phần tử không có nút văn bản hậu duệ là một chuỗi rỗng [không phải
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified12]. Mọi thuộc tính
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified13 đều bị bỏ qua. Lưu ý rằng nút
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified14 chỉ có khoảng trắng giữa hai phần tử không phải văn bản được giữ nguyên và khoảng trắng ở đầu trên nút
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified14 không bị làm phẳng. XPath 1. 0 Hàm
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified11 có thể được tham khảo về các quy tắc xác định giá trị chuỗi của các loại nút XML khác và các giá trị không phải XML
Các quy tắc chuyển đổi được trình bày ở đây không chính xác theo tiêu chuẩn SQL, như đã thảo luận trong Phần D. 3. 1. 3
Nếu biểu thức đường dẫn trả về một tập hợp nút trống [thông thường, khi nó không khớp] cho một hàng nhất định, thì cột đó sẽ được đặt thành
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified12, trừ khi một
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified18 được chỉ định;
Một
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified18, thay vì được đánh giá ngay lập tức khi
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified5 được gọi, được đánh giá mỗi khi cần một giá trị mặc định cho cột. Nếu biểu thức đủ điều kiện là ổn định hoặc không thay đổi, đánh giá lặp lại có thể được bỏ qua. Điều này có nghĩa là bạn có thể sử dụng hữu ích các hàm dễ bay hơi như
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified21 trong
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified18
Các cột có thể được đánh dấu
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified23. Nếu cột
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified01 cho cột
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified23 không khớp với bất kỳ thứ gì và không có
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified26 hoặc cột
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified18 cũng được đánh giá là null thì sẽ báo lỗi
ví dụ
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified
Ví dụ sau đây cho thấy sự kết hợp của nhiều nút text[], cách sử dụng tên cột dưới dạng bộ lọc XPath và cách xử lý khoảng trắng, nhận xét XML và hướng dẫn xử lý
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified2
Ví dụ sau minh họa cách sử dụng mệnh đề
CREATE TABLE xmldata AS SELECT xml $$ AU Australia JP Japan Shinzo Abe 145935 SG Singapore 697 $$ AS data; SELECT xmltable.* FROM xmldata, XMLTABLE['//ROWS/ROW' PASSING data COLUMNS id int PATH '@id', ordinality FOR ORDINALITY, "COUNTRY_NAME" text, country_id text PATH 'COUNTRY_ID', size_sq_km float PATH 'SIZE[@unit = "sq_km"]', size_other text PATH 'concat[SIZE[@unit!="sq_km"], " ", SIZE[@unit!="sq_km"]/@unit]', premier_name text PATH 'PREMIER_NAME' DEFAULT 'not specified']; id | ordinality | COUNTRY_NAME | country_id | size_sq_km | size_other | premier_name ----+------------+--------------+------------+------------+--------------+--------------- 1 | 1 | Australia | AU | | | not specified 5 | 2 | Japan | JP | | 145935 sq_mi | Shinzo Abe 6 | 3 | Singapore | SG | 697 | | not specified0 để chỉ định danh sách các không gian tên được sử dụng trong tài liệu XML cũng như trong các biểu thức XPath