JSON_VALUE()¶
JSON_VALUE() 从 JSON 文档中指定路径提取标量值并以字符串形式返回。适用于从 JSON 文档中提取单个值,如字符串、数字和布尔值。
函数说明¶
JSON_VALUE() 导航 JSON 路径表达式并返回该位置处的标量值作为 SQL 字符串。与 JSON_EXTRACT() 不同(后者保留 JSON 类型),JSON_VALUE() 始终返回字符串表示形式。
如果文档中不存在该路径,函数返回 NULL。如果任一参数为 NULL,函数返回 NULL。不支持通配符路径和非标量结果。
Syntax¶
> JSON_VALUE(json_doc, path)
Arguments¶
参数 |
说明 |
|---|---|
json_doc |
必填。一个 JSON 文档(字符串、JSON 列或 JSON 函数的结果)。 |
path |
必填。指向标量值的 JSON 路径表达式。 |
Examples¶
DROP DATABASE IF EXISTS dbfuncs;
CREATE DATABASE dbfuncs;
USE dbfuncs;
-- 字符串提取
SELECT JSON_VALUE('{"fname": "Joe", "lname": "Palmer"}', '$.fname');
SELECT JSON_VALUE('{"fname": "Joe", "lname": "Palmer"}', '$.lname');
-- 数字提取(返回字符串)
SELECT JSON_VALUE('{"item": "shoes", "price": "49.95"}', '$.price');
-- 嵌套路径
SELECT JSON_VALUE('{"a": {"b": [1,2,3]}}', '$.a.b[1]');
-- 布尔值
SELECT JSON_VALUE('{"active": true}', '$.active');
-- NULL JSON 值返回 SQL NULL
SELECT JSON_VALUE('{"x": null}', '$.x');
-- 缺失路径返回 NULL
SELECT JSON_VALUE('{"a": 1}', '$.missing');
-- NULL 输入
SELECT JSON_VALUE(NULL, '$.a');
SELECT JSON_VALUE('{"a": 1}', NULL);
-- 通过 JSON 函数
SELECT JSON_VALUE(JSON_OBJECT('k1', 'v1', 'k2', 42), '$.k1');
SELECT JSON_VALUE(JSON_ARRAY(1, 2, 3), '$[0]');
SELECT JSON_VALUE(JSON_ARRAY(1, 2, 3), '$[2]');
-- 表中使用
CREATE TABLE t1 (a VARCHAR(200));
INSERT INTO t1 VALUES ('{"name":"Alice","age":30}'), ('{"name":"Bob","age":25}'), (NULL);
SELECT JSON_VALUE(a, '$.name') FROM t1;
SELECT JSON_VALUE(a, '$.age') FROM t1;
DROP TABLE t1;
DROP DATABASE dbfuncs;