Truyền từ
SELECT CAST[JSON 'null' AS VARCHAR]; -- NULL SELECT CAST[JSON '1' AS INTEGER]; -- 1 SELECT CAST[JSON '9223372036854775807' AS BIGINT]; -- 9223372036854775807 SELECT CAST[JSON '"abc"' AS VARCHAR]; -- abc SELECT CAST[JSON 'true' AS BOOLEAN]; -- true SELECT CAST[JSON '1.234' AS DOUBLE]; -- 1.234 SELECT CAST[JSON '[1,23,456]' AS ARRAY[INTEGER]]; -- [1, 23, 456] SELECT CAST[JSON '[1,null,456]' AS ARRAY[INTEGER]]; -- [1, NULL, 456] SELECT CAST[JSON '[[1,23],[456]]' AS ARRAY[ARRAY[INTEGER]]]; -- [[1, 23], [456]] SELECT CAST[JSON '{"k1":1,"k2":23,"k3":456}' AS MAP[VARCHAR, INTEGER]]; -- {k1=1, k2=23, k3=456} SELECT CAST[JSON '{"v1":123,"v2":"abc","v3":true}' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {v1=123, v2=abc, v3=true} SELECT CAST[JSON '[123,"abc",true]' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {value1=123, value2=abc, value3=true}8,
SELECT CAST[JSON 'null' AS VARCHAR]; -- NULL SELECT CAST[JSON '1' AS INTEGER]; -- 1 SELECT CAST[JSON '9223372036854775807' AS BIGINT]; -- 9223372036854775807 SELECT CAST[JSON '"abc"' AS VARCHAR]; -- abc SELECT CAST[JSON 'true' AS BOOLEAN]; -- true SELECT CAST[JSON '1.234' AS DOUBLE]; -- 1.234 SELECT CAST[JSON '[1,23,456]' AS ARRAY[INTEGER]]; -- [1, 23, 456] SELECT CAST[JSON '[1,null,456]' AS ARRAY[INTEGER]]; -- [1, NULL, 456] SELECT CAST[JSON '[[1,23],[456]]' AS ARRAY[ARRAY[INTEGER]]]; -- [[1, 23], [456]] SELECT CAST[JSON '{"k1":1,"k2":23,"k3":456}' AS MAP[VARCHAR, INTEGER]]; -- {k1=1, k2=23, k3=456} SELECT CAST[JSON '{"v1":123,"v2":"abc","v3":true}' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {v1=123, v2=abc, v3=true} SELECT CAST[JSON '[123,"abc",true]' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {value1=123, value2=abc, value3=true}9,
SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']0,
SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']1,
SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']2,
SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']3,
SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']4 hoặc
SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']5 được hỗ trợ. Truyền từ
SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']6,
SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']7 hoặc
SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']8 được hỗ trợ khi loại phần tử của mảng là một trong các loại được hỗ trợ hoặc khi loại khóa của bản đồ là
SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']5 và loại giá trị của bản đồ là một trong các loại được hỗ trợ hoặc khi mọi trường . Hành vi của các diễn viên được hiển thị với các ví dụ bên dưới
SELECT CAST[JSON 'null' AS VARCHAR]; -- NULL SELECT CAST[JSON '1' AS INTEGER]; -- 1 SELECT CAST[JSON '9223372036854775807' AS BIGINT]; -- 9223372036854775807 SELECT CAST[JSON '"abc"' AS VARCHAR]; -- abc SELECT CAST[JSON 'true' AS BOOLEAN]; -- true SELECT CAST[JSON '1.234' AS DOUBLE]; -- 1.234 SELECT CAST[JSON '[1,23,456]' AS ARRAY[INTEGER]]; -- [1, 23, 456] SELECT CAST[JSON '[1,null,456]' AS ARRAY[INTEGER]]; -- [1, NULL, 456] SELECT CAST[JSON '[[1,23],[456]]' AS ARRAY[ARRAY[INTEGER]]]; -- [[1, 23], [456]] SELECT CAST[JSON '{"k1":1,"k2":23,"k3":456}' AS MAP[VARCHAR, INTEGER]]; -- {k1=1, k2=23, k3=456} SELECT CAST[JSON '{"v1":123,"v2":"abc","v3":true}' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {v1=123, v2=abc, v3=true} SELECT CAST[JSON '[123,"abc",true]' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {value1=123, value2=abc, value3=true}2
Ghi chú
Truyền từ NULL sang
SELECT CAST[JSON 'null' AS VARCHAR]; -- NULL SELECT CAST[JSON '1' AS INTEGER]; -- 1 SELECT CAST[JSON '9223372036854775807' AS BIGINT]; -- 9223372036854775807 SELECT CAST[JSON '"abc"' AS VARCHAR]; -- abc SELECT CAST[JSON 'true' AS BOOLEAN]; -- true SELECT CAST[JSON '1.234' AS DOUBLE]; -- 1.234 SELECT CAST[JSON '[1,23,456]' AS ARRAY[INTEGER]]; -- [1, 23, 456] SELECT CAST[JSON '[1,null,456]' AS ARRAY[INTEGER]]; -- [1, NULL, 456] SELECT CAST[JSON '[[1,23],[456]]' AS ARRAY[ARRAY[INTEGER]]]; -- [[1, 23], [456]] SELECT CAST[JSON '{"k1":1,"k2":23,"k3":456}' AS MAP[VARCHAR, INTEGER]]; -- {k1=1, k2=23, k3=456} SELECT CAST[JSON '{"v1":123,"v2":"abc","v3":true}' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {v1=123, v2=abc, v3=true} SELECT CAST[JSON '[123,"abc",true]' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {value1=123, value2=abc, value3=true}30 không đơn giản. Truyền từ một
SELECT CAST[JSON 'null' AS VARCHAR]; -- NULL SELECT CAST[JSON '1' AS INTEGER]; -- 1 SELECT CAST[JSON '9223372036854775807' AS BIGINT]; -- 9223372036854775807 SELECT CAST[JSON '"abc"' AS VARCHAR]; -- abc SELECT CAST[JSON 'true' AS BOOLEAN]; -- true SELECT CAST[JSON '1.234' AS DOUBLE]; -- 1.234 SELECT CAST[JSON '[1,23,456]' AS ARRAY[INTEGER]]; -- [1, 23, 456] SELECT CAST[JSON '[1,null,456]' AS ARRAY[INTEGER]]; -- [1, NULL, 456] SELECT CAST[JSON '[[1,23],[456]]' AS ARRAY[ARRAY[INTEGER]]]; -- [[1, 23], [456]] SELECT CAST[JSON '{"k1":1,"k2":23,"k3":456}' AS MAP[VARCHAR, INTEGER]]; -- {k1=1, k2=23, k3=456} SELECT CAST[JSON '{"v1":123,"v2":"abc","v3":true}' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {v1=123, v2=abc, v3=true} SELECT CAST[JSON '[123,"abc",true]' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {value1=123, value2=abc, value3=true}31 độc lập sẽ tạo ra một SQL
SELECT CAST[JSON 'null' AS VARCHAR]; -- NULL SELECT CAST[JSON '1' AS INTEGER]; -- 1 SELECT CAST[JSON '9223372036854775807' AS BIGINT]; -- 9223372036854775807 SELECT CAST[JSON '"abc"' AS VARCHAR]; -- abc SELECT CAST[JSON 'true' AS BOOLEAN]; -- true SELECT CAST[JSON '1.234' AS DOUBLE]; -- 1.234 SELECT CAST[JSON '[1,23,456]' AS ARRAY[INTEGER]]; -- [1, 23, 456] SELECT CAST[JSON '[1,null,456]' AS ARRAY[INTEGER]]; -- [1, NULL, 456] SELECT CAST[JSON '[[1,23],[456]]' AS ARRAY[ARRAY[INTEGER]]]; -- [[1, 23], [456]] SELECT CAST[JSON '{"k1":1,"k2":23,"k3":456}' AS MAP[VARCHAR, INTEGER]]; -- {k1=1, k2=23, k3=456} SELECT CAST[JSON '{"v1":123,"v2":"abc","v3":true}' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {v1=123, v2=abc, v3=true} SELECT CAST[JSON '[123,"abc",true]' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {value1=123, value2=abc, value3=true}31 thay vì
SELECT CAST[JSON 'null' AS VARCHAR]; -- NULL SELECT CAST[JSON '1' AS INTEGER]; -- 1 SELECT CAST[JSON '9223372036854775807' AS BIGINT]; -- 9223372036854775807 SELECT CAST[JSON '"abc"' AS VARCHAR]; -- abc SELECT CAST[JSON 'true' AS BOOLEAN]; -- true SELECT CAST[JSON '1.234' AS DOUBLE]; -- 1.234 SELECT CAST[JSON '[1,23,456]' AS ARRAY[INTEGER]]; -- [1, 23, 456] SELECT CAST[JSON '[1,null,456]' AS ARRAY[INTEGER]]; -- [1, NULL, 456] SELECT CAST[JSON '[[1,23],[456]]' AS ARRAY[ARRAY[INTEGER]]]; -- [[1, 23], [456]] SELECT CAST[JSON '{"k1":1,"k2":23,"k3":456}' AS MAP[VARCHAR, INTEGER]]; -- {k1=1, k2=23, k3=456} SELECT CAST[JSON '{"v1":123,"v2":"abc","v3":true}' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {v1=123, v2=abc, v3=true} SELECT CAST[JSON '[123,"abc",true]' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {value1=123, value2=abc, value3=true}33. Tuy nhiên, khi truyền từ các mảng hoặc bản đồ có chứa các
SELECT CAST[JSON 'null' AS VARCHAR]; -- NULL SELECT CAST[JSON '1' AS INTEGER]; -- 1 SELECT CAST[JSON '9223372036854775807' AS BIGINT]; -- 9223372036854775807 SELECT CAST[JSON '"abc"' AS VARCHAR]; -- abc SELECT CAST[JSON 'true' AS BOOLEAN]; -- true SELECT CAST[JSON '1.234' AS DOUBLE]; -- 1.234 SELECT CAST[JSON '[1,23,456]' AS ARRAY[INTEGER]]; -- [1, 23, 456] SELECT CAST[JSON '[1,null,456]' AS ARRAY[INTEGER]]; -- [1, NULL, 456] SELECT CAST[JSON '[[1,23],[456]]' AS ARRAY[ARRAY[INTEGER]]]; -- [[1, 23], [456]] SELECT CAST[JSON '{"k1":1,"k2":23,"k3":456}' AS MAP[VARCHAR, INTEGER]]; -- {k1=1, k2=23, k3=456} SELECT CAST[JSON '{"v1":123,"v2":"abc","v3":true}' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {v1=123, v2=abc, v3=true} SELECT CAST[JSON '[123,"abc",true]' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {value1=123, value2=abc, value3=true}31, thì
SELECT CAST[JSON 'null' AS VARCHAR]; -- NULL SELECT CAST[JSON '1' AS INTEGER]; -- 1 SELECT CAST[JSON '9223372036854775807' AS BIGINT]; -- 9223372036854775807 SELECT CAST[JSON '"abc"' AS VARCHAR]; -- abc SELECT CAST[JSON 'true' AS BOOLEAN]; -- true SELECT CAST[JSON '1.234' AS DOUBLE]; -- 1.234 SELECT CAST[JSON '[1,23,456]' AS ARRAY[INTEGER]]; -- [1, 23, 456] SELECT CAST[JSON '[1,null,456]' AS ARRAY[INTEGER]]; -- [1, NULL, 456] SELECT CAST[JSON '[[1,23],[456]]' AS ARRAY[ARRAY[INTEGER]]]; -- [[1, 23], [456]] SELECT CAST[JSON '{"k1":1,"k2":23,"k3":456}' AS MAP[VARCHAR, INTEGER]]; -- {k1=1, k2=23, k3=456} SELECT CAST[JSON '{"v1":123,"v2":"abc","v3":true}' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {v1=123, v2=abc, v3=true} SELECT CAST[JSON '[123,"abc",true]' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {value1=123, value2=abc, value3=true}30 được sản xuất sẽ có các
SELECT CAST[JSON 'null' AS VARCHAR]; -- NULL SELECT CAST[JSON '1' AS INTEGER]; -- 1 SELECT CAST[JSON '9223372036854775807' AS BIGINT]; -- 9223372036854775807 SELECT CAST[JSON '"abc"' AS VARCHAR]; -- abc SELECT CAST[JSON 'true' AS BOOLEAN]; -- true SELECT CAST[JSON '1.234' AS DOUBLE]; -- 1.234 SELECT CAST[JSON '[1,23,456]' AS ARRAY[INTEGER]]; -- [1, 23, 456] SELECT CAST[JSON '[1,null,456]' AS ARRAY[INTEGER]]; -- [1, NULL, 456] SELECT CAST[JSON '[[1,23],[456]]' AS ARRAY[ARRAY[INTEGER]]]; -- [[1, 23], [456]] SELECT CAST[JSON '{"k1":1,"k2":23,"k3":456}' AS MAP[VARCHAR, INTEGER]]; -- {k1=1, k2=23, k3=456} SELECT CAST[JSON '{"v1":123,"v2":"abc","v3":true}' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {v1=123, v2=abc, v3=true} SELECT CAST[JSON '[123,"abc",true]' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {value1=123, value2=abc, value3=true}36 trong đó
Ghi chú
Khi chuyển từ
SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']8 sang
SELECT CAST[JSON 'null' AS VARCHAR]; -- NULL SELECT CAST[JSON '1' AS INTEGER]; -- 1 SELECT CAST[JSON '9223372036854775807' AS BIGINT]; -- 9223372036854775807 SELECT CAST[JSON '"abc"' AS VARCHAR]; -- abc SELECT CAST[JSON 'true' AS BOOLEAN]; -- true SELECT CAST[JSON '1.234' AS DOUBLE]; -- 1.234 SELECT CAST[JSON '[1,23,456]' AS ARRAY[INTEGER]]; -- [1, 23, 456] SELECT CAST[JSON '[1,null,456]' AS ARRAY[INTEGER]]; -- [1, NULL, 456] SELECT CAST[JSON '[[1,23],[456]]' AS ARRAY[ARRAY[INTEGER]]]; -- [[1, 23], [456]] SELECT CAST[JSON '{"k1":1,"k2":23,"k3":456}' AS MAP[VARCHAR, INTEGER]]; -- {k1=1, k2=23, k3=456} SELECT CAST[JSON '{"v1":123,"v2":"abc","v3":true}' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {v1=123, v2=abc, v3=true} SELECT CAST[JSON '[123,"abc",true]' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {value1=123, value2=abc, value3=true}30, kết quả là một mảng JSON chứ không phải đối tượng JSON. Điều này là do các vị trí quan trọng hơn tên của các hàng trong SQL
Truyền từ JSON#
Truyền tới
SELECT CAST[JSON 'null' AS VARCHAR]; -- NULL SELECT CAST[JSON '1' AS INTEGER]; -- 1 SELECT CAST[JSON '9223372036854775807' AS BIGINT]; -- 9223372036854775807 SELECT CAST[JSON '"abc"' AS VARCHAR]; -- abc SELECT CAST[JSON 'true' AS BOOLEAN]; -- true SELECT CAST[JSON '1.234' AS DOUBLE]; -- 1.234 SELECT CAST[JSON '[1,23,456]' AS ARRAY[INTEGER]]; -- [1, 23, 456] SELECT CAST[JSON '[1,null,456]' AS ARRAY[INTEGER]]; -- [1, NULL, 456] SELECT CAST[JSON '[[1,23],[456]]' AS ARRAY[ARRAY[INTEGER]]]; -- [[1, 23], [456]] SELECT CAST[JSON '{"k1":1,"k2":23,"k3":456}' AS MAP[VARCHAR, INTEGER]]; -- {k1=1, k2=23, k3=456} SELECT CAST[JSON '{"v1":123,"v2":"abc","v3":true}' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {v1=123, v2=abc, v3=true} SELECT CAST[JSON '[123,"abc",true]' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {value1=123, value2=abc, value3=true}8,SELECT CAST[JSON 'null' AS VARCHAR]; -- NULL SELECT CAST[JSON '1' AS INTEGER]; -- 1 SELECT CAST[JSON '9223372036854775807' AS BIGINT]; -- 9223372036854775807 SELECT CAST[JSON '"abc"' AS VARCHAR]; -- abc SELECT CAST[JSON 'true' AS BOOLEAN]; -- true SELECT CAST[JSON '1.234' AS DOUBLE]; -- 1.234 SELECT CAST[JSON '[1,23,456]' AS ARRAY[INTEGER]]; -- [1, 23, 456] SELECT CAST[JSON '[1,null,456]' AS ARRAY[INTEGER]]; -- [1, NULL, 456] SELECT CAST[JSON '[[1,23],[456]]' AS ARRAY[ARRAY[INTEGER]]]; -- [[1, 23], [456]] SELECT CAST[JSON '{"k1":1,"k2":23,"k3":456}' AS MAP[VARCHAR, INTEGER]]; -- {k1=1, k2=23, k3=456} SELECT CAST[JSON '{"v1":123,"v2":"abc","v3":true}' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {v1=123, v2=abc, v3=true} SELECT CAST[JSON '[123,"abc",true]' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {value1=123, value2=abc, value3=true}9,SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']0,SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']1,SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']2,SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']3,SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']4 hoặcSELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']5 được hỗ trợ. Truyền tớiSELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']6 vàSELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']7 được hỗ trợ khi loại phần tử của mảng là một trong các loại được hỗ trợ hoặc khi loại khóa của bản đồ làSELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']5 và loại giá trị của bản đồ là một trong các loại được hỗ trợ. Hành vi của các diễn viên được hiển thị với các ví dụ bên dướiSELECT CAST[JSON 'null' AS VARCHAR]; -- NULL SELECT CAST[JSON '1' AS INTEGER]; -- 1 SELECT CAST[JSON '9223372036854775807' AS BIGINT]; -- 9223372036854775807 SELECT CAST[JSON '"abc"' AS VARCHAR]; -- abc SELECT CAST[JSON 'true' AS BOOLEAN]; -- true SELECT CAST[JSON '1.234' AS DOUBLE]; -- 1.234 SELECT CAST[JSON '[1,23,456]' AS ARRAY[INTEGER]]; -- [1, 23, 456] SELECT CAST[JSON '[1,null,456]' AS ARRAY[INTEGER]]; -- [1, NULL, 456] SELECT CAST[JSON '[[1,23],[456]]' AS ARRAY[ARRAY[INTEGER]]]; -- [[1, 23], [456]] SELECT CAST[JSON '{"k1":1,"k2":23,"k3":456}' AS MAP[VARCHAR, INTEGER]]; -- {k1=1, k2=23, k3=456} SELECT CAST[JSON '{"v1":123,"v2":"abc","v3":true}' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {v1=123, v2=abc, v3=true} SELECT CAST[JSON '[123,"abc",true]' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {value1=123, value2=abc, value3=true}
Ghi chú
Mảng JSON có thể có các loại phần tử hỗn hợp và bản đồ JSON có thể có các loại giá trị hỗn hợp. Điều này khiến không thể chuyển chúng thành các mảng và bản đồ SQL trong một số trường hợp. Để giải quyết vấn đề này, Presto hỗ trợ truyền một phần mảng và bản đồ
SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']
Ghi chú
Khi truyền từ
SELECT CAST[JSON 'null' AS VARCHAR]; -- NULL SELECT CAST[JSON '1' AS INTEGER]; -- 1 SELECT CAST[JSON '9223372036854775807' AS BIGINT]; -- 9223372036854775807 SELECT CAST[JSON '"abc"' AS VARCHAR]; -- abc SELECT CAST[JSON 'true' AS BOOLEAN]; -- true SELECT CAST[JSON '1.234' AS DOUBLE]; -- 1.234 SELECT CAST[JSON '[1,23,456]' AS ARRAY[INTEGER]]; -- [1, 23, 456] SELECT CAST[JSON '[1,null,456]' AS ARRAY[INTEGER]]; -- [1, NULL, 456] SELECT CAST[JSON '[[1,23],[456]]' AS ARRAY[ARRAY[INTEGER]]]; -- [[1, 23], [456]] SELECT CAST[JSON '{"k1":1,"k2":23,"k3":456}' AS MAP[VARCHAR, INTEGER]]; -- {k1=1, k2=23, k3=456} SELECT CAST[JSON '{"v1":123,"v2":"abc","v3":true}' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {v1=123, v2=abc, v3=true} SELECT CAST[JSON '[123,"abc",true]' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {value1=123, value2=abc, value3=true}30 đến
SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']8, cả mảng JSON và đối tượng JSON đều được hỗ trợ
Hàm JSON#
is_json_scalar[json] → boolean#Xác định xem
SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']72 có phải là một số vô hướng [i. e. một số JSON, một chuỗi JSON,
SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']73,
SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']74 hoặc
SELECT CAST[JSON 'null' AS VARCHAR]; -- NULL SELECT CAST[JSON '1' AS INTEGER]; -- 1 SELECT CAST[JSON '9223372036854775807' AS BIGINT]; -- 9223372036854775807 SELECT CAST[JSON '"abc"' AS VARCHAR]; -- abc SELECT CAST[JSON 'true' AS BOOLEAN]; -- true SELECT CAST[JSON '1.234' AS DOUBLE]; -- 1.234 SELECT CAST[JSON '[1,23,456]' AS ARRAY[INTEGER]]; -- [1, 23, 456] SELECT CAST[JSON '[1,null,456]' AS ARRAY[INTEGER]]; -- [1, NULL, 456] SELECT CAST[JSON '[[1,23],[456]]' AS ARRAY[ARRAY[INTEGER]]]; -- [[1, 23], [456]] SELECT CAST[JSON '{"k1":1,"k2":23,"k3":456}' AS MAP[VARCHAR, INTEGER]]; -- {k1=1, k2=23, k3=456} SELECT CAST[JSON '{"v1":123,"v2":"abc","v3":true}' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {v1=123, v2=abc, v3=true} SELECT CAST[JSON '[123,"abc",true]' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {value1=123, value2=abc, value3=true}36]
SELECT CAST[JSON 'null' AS VARCHAR]; -- NULL SELECT CAST[JSON '1' AS INTEGER]; -- 1 SELECT CAST[JSON '9223372036854775807' AS BIGINT]; -- 9223372036854775807 SELECT CAST[JSON '"abc"' AS VARCHAR]; -- abc SELECT CAST[JSON 'true' AS BOOLEAN]; -- true SELECT CAST[JSON '1.234' AS DOUBLE]; -- 1.234 SELECT CAST[JSON '[1,23,456]' AS ARRAY[INTEGER]]; -- [1, 23, 456] SELECT CAST[JSON '[1,null,456]' AS ARRAY[INTEGER]]; -- [1, NULL, 456] SELECT CAST[JSON '[[1,23],[456]]' AS ARRAY[ARRAY[INTEGER]]]; -- [[1, 23], [456]] SELECT CAST[JSON '{"k1":1,"k2":23,"k3":456}' AS MAP[VARCHAR, INTEGER]]; -- {k1=1, k2=23, k3=456} SELECT CAST[JSON '{"v1":123,"v2":"abc","v3":true}' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {v1=123, v2=abc, v3=true} SELECT CAST[JSON '[123,"abc",true]' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {value1=123, value2=abc, value3=true}3
Xác định xem
SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']76 có tồn tại trong
SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']72 không [một chuỗi chứa một mảng JSON]
SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']4json_array_get[json_array , index] → json#
Cảnh báo
Ngữ nghĩa của chức năng này bị hỏng. Nếu phần tử được trích xuất là một chuỗi, nó sẽ được chuyển đổi thành một giá trị
SELECT CAST[JSON 'null' AS VARCHAR]; -- NULL SELECT CAST[JSON '1' AS INTEGER]; -- 1 SELECT CAST[JSON '9223372036854775807' AS BIGINT]; -- 9223372036854775807 SELECT CAST[JSON '"abc"' AS VARCHAR]; -- abc SELECT CAST[JSON 'true' AS BOOLEAN]; -- true SELECT CAST[JSON '1.234' AS DOUBLE]; -- 1.234 SELECT CAST[JSON '[1,23,456]' AS ARRAY[INTEGER]]; -- [1, 23, 456] SELECT CAST[JSON '[1,null,456]' AS ARRAY[INTEGER]]; -- [1, NULL, 456] SELECT CAST[JSON '[[1,23],[456]]' AS ARRAY[ARRAY[INTEGER]]]; -- [[1, 23], [456]] SELECT CAST[JSON '{"k1":1,"k2":23,"k3":456}' AS MAP[VARCHAR, INTEGER]]; -- {k1=1, k2=23, k3=456} SELECT CAST[JSON '{"v1":123,"v2":"abc","v3":true}' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {v1=123, v2=abc, v3=true} SELECT CAST[JSON '[123,"abc",true]' AS ROW[v1 BIGINT, v2 VARCHAR, v3 BOOLEAN]]; -- {value1=123, value2=abc, value3=true}30 không hợp lệ không được trích dẫn chính xác [giá trị sẽ không được bao quanh bởi dấu ngoặc kép và mọi dấu ngoặc kép bên trong sẽ không được thoát]
Chúng tôi khuyên bạn không nên sử dụng chức năng này. Nó không thể được sửa chữa mà không ảnh hưởng đến các tập quán hiện có và có thể bị xóa trong bản phát hành trong tương lai
Trả về phần tử tại chỉ mục đã chỉ định vào
SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']79. Chỉ số này dựa trên số không
SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']7
Hàm này cũng hỗ trợ các chỉ mục phủ định để tìm nạp phần tử được lập chỉ mục từ cuối một mảng
SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']8
Nếu phần tử tại chỉ mục đã chỉ định không tồn tại, hàm sẽ trả về null
SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']9json_array_length[json] → bigint#
Trả về độ dài của mảng là
SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']72 [một chuỗi chứa một mảng JSON]
SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']1json_extract[json , json_path] → json#
Đánh giá biểu thức giống như JSONPath
SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']81 trên
SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']72 [một chuỗi chứa JSON] và trả về kết quả dưới dạng một chuỗi JSON
SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']4json_extract_scalar[json , json_path] → varchar#
Giống như
SELECT CAST[JSON '[[1, 23], 456]' AS ARRAY[JSON]]; -- [JSON '[1,23]', JSON '456'] SELECT CAST[JSON '{"k1": [1, 23], "k2": 456}' AS MAP[VARCHAR, JSON]]; -- {k1 = JSON '[1,23]', k2 = JSON '456'} SELECT CAST[JSON '[null]' AS ARRAY[JSON]]; -- [JSON 'null']83, nhưng trả về kích thước của giá trị. Đối với các đối tượng hoặc mảng, kích thước là số thành viên và kích thước của giá trị vô hướng bằng không