WITH t AS (
SELECT parse_json('{"user": {"id": 101, "tags": ["vip", "active"]}}') AS data
)
SELECT
data['user']['id'] AS user_id_json, -- 返回 JSON 类型的 101
data['user']['tags'][0] AS first_tag; -- 返回 JSON 类型的 "vip"
2.2 类型提取函数(推荐用于计算)
使用
json_extract_*
json_extract_*
系列函数,直接返回 SQL 原生类型(如 BIGINT, STRING),便于后续计算和过滤。
函数
返回类型
示例
json_extract_string
json_extract_string
STRING
json_extract_string(data, '$.name')
json_extract_string(data, '$.name')
json_extract_bigint
json_extract_bigint
BIGINT
json_extract_bigint(data, '$.id')
json_extract_bigint(data, '$.id')
json_extract_int
json_extract_int
INT
json_extract_int(data, '$.age')
json_extract_int(data, '$.age')
json_extract_double
json_extract_double
DOUBLE
json_extract_double(data, '$.price')
json_extract_double(data, '$.price')
json_extract_float
json_extract_float
FLOAT
json_extract_float(data, '$.score')
json_extract_float(data, '$.score')
json_extract_boolean
json_extract_boolean
BOOLEAN
json_extract_boolean(data, '$.is_active')
json_extract_boolean(data, '$.is_active')
json_extract_date
json_extract_date
DATE
json_extract_date(data, '$.birth_date')
json_extract_date(data, '$.birth_date')
json_extract_timestamp
json_extract_timestamp
TIMESTAMP
json_extract_timestamp(data, '$.created')
json_extract_timestamp(data, '$.created')
示例:
SELECT
json_extract_bigint(data, '$.user.id') AS user_id,
json_extract_string(data, '$.user.tags[0]') AS first_tag
FROM (SELECT parse_json('{"user": {"id": 101, "tags": ["vip"]}}') AS data) t;