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;