MySQL --- 函数大全3

目录

1.返回串联字符串   GROUP_CONCAT()

2.返回子字符串第一次出现的索引  INSTR()

3.如果子集中的所有 GTID 也在集合中,返回 true,否则返回false   GTID_SUBSET() 

4.返回集合中不在子集中的所有 GTID   GTID_SUBTRACT()

5.十进制或字符串值的十六进制表示形式   HEX()

6.提取小时   HOUR()

7.重症监护室库版本   ICU_SUBTRACT()

8.如果/否则构造  IF()

9.空 if/else 构造  IFNULL()

10.值是否在一组值内    IN()

11.返回 IP 地址的数值        INET_ATON()

12.从数值返回 IP 地址         INET_NTOA()

13.返回 IPv6 地址的数值       INET6_ATON()

14.从数值返回 IPv6 地址       INET6_NTOA()

15.在指定位置插入子字符串,最多插入指定数量的字符        INSERT()

16.返回小于第一个参数的索引论点        INTERVAL()

17.针对布尔值测试值        IS()

18.命名锁是否可用        IS_FREE_LOCK()

19.参数是否为 IPv4 地址        IS_IPV4()

20.参数是否为与 IPv4 兼容的地址        IS_IPV4_COMPAT()

21.参数是否为 IPv4 映射地址        IS_IPV4_MAPPED()

22.参数是否为 IPv6 地址        IS_IPV6()

23.针对布尔值测试值        IS NOT()

24.非空值测试        IS NOT NULL()

25.空值测试        IS NULL()

26.命名锁是否正在使用中;如果返回连接标识符,则返回真        IS_USED_LOCK()

27.参数是否为有效的 UUID        IS_UUID()

28.测试参数是否为 NULL        ISNULL()

29.创建 JSON 数组        JSON_ARRAY()

30.将数据追加到 JSON 文档        JSON_ARRAY_APPEND()

31.插入到 JSON 数组中        JSON_ARRAY_INSERT()

32.将结果集作为单个 JSON 数组返回        JSON_ARRAYAGG()

33.JSON 文档是否在路径中包含特定对象        JSON_CONTAINS()

34.JSON 文档是否在路径中包含任何数据        JSON_CONTAINS_PATH()

35.JSON 文档的最大深度        JSON_DEPTH()

36.从 JSON 文档返回数据        JSON_EXTRTACT()

37.将数据插入 JSON 文档        JSON_INSERT()

38.来自 JSON 文档的键数组        JSON_KEYS()

39.JSON 文档中的元素数        JSON_LENGTH()

40.合并 JSON 文档,替换重复键的值        JSON_MERGE_PATCH()

41.合并 JSON 文档,保留重复的键        JSON_MERGE_PRESERVE()

42.创建 JSON 对象        JSON_OBJECT()

43.将结果集作为单个JSON 对象返回        JSON_OBJECTAGG()

44.比较两个JSON文档是否拥有任何一个相同键值对或数组元素 JSON_OVERLAPS()

45.以可读的格式打印 JSON 文档        JSON_PRETTY()

46.引用 JSON 文档        JSON_QUOTE()

47.从 JSON 文档中删除数据        JSON_REMOVE()

48.替换 JSON 文档中的值        JSON_REPLACE()

49.根据指定的 JSON 模式验证一个 JSON 文档     JSON_SCHEMA_VALID()

50.根据指定的 JSON 模式验证一个 JSON 文档,并返回一个验证报告        JSON_SCHEMA_VALIDATION_REPORT()


1.返回串联字符串   GROUP_CONCAT()

脚本

create table emp
(
    emp_id     int primary key auto_increment comment '编号',
    emp_name   char(20)       not null default '' comment '姓名',
    salary     decimal(10, 2) not null default 0 comment '工资',
    department char(20)       not null default '' comment '部门'
);

insert into emp(emp_name, salary, department)
values ('张晶晶', 5000, '财务部'),
       ('王飞飞', 5800, '财务部'),
       ('刘小贝', 5700, '人事部'),
       ('王大鹏', 6700, '人事部'),
       ('刘云云', 7500, '销售部'),
       ('刘云鹏', 7200, '销售部');

select department,group_concat(emp_name) from emp group by department;

分析

列转行

结果

MySQL --- 函数大全3_第1张图片

2.返回子字符串第一次出现的索引  INSTR()

脚本

SELECT INSTR('foobarbar', 'bar'), INSTR('xbar', 'foobar');

分析

INSTR(str ,substr)

返回字符串 str 中子字符串 substr 第一次出现的位置

结果

3.如果子集中的所有 GTID 也在集合中,返回 true,否则返回false   GTID_SUBSET() 

脚本

SELECT GTID_SUBSET('3E11FA47-71CA-11E1-9E33-C80AA9429562:23', '3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57');

分析

GTID_SUBSET(set1,set2)

给定两组全局事务标识符set1和set2,如果set1中的所有gtid也在set2中,则返回true。否则返回false。

结果

4.返回集合中不在子集中的所有 GTID   GTID_SUBTRACT()

脚本

SELECT GTID_SUBTRACT( '3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57','3E11FA47-71CA-11E1-9E33-C80AA9429562:28' );

分析

给定两组全局事务标识符set1和set2,只返回set1中不属于set2的gtid。

结果

5.十进制或字符串值的十六进制表示形式   HEX()

脚本

SELECT HEX('abc'),HEX(123);

结果

6.提取小时   HOUR()

脚本

select hour('2022-12-12 15:20:30')

结果

7.重症监护室库版本   ICU_SUBTRACT()

脚本

SELECT ICU_VERSION();

分析

ICU_VERSION()函数返回用于支持正则表达式操作的 Unicode 国际组件 (ICU) 库的版本。

结果

8.如果/否则构造  IF()

脚本

SELECT IF(1<2,'yes','no');

分析

IF(expr1,expr2,expr3)

  • 如果expr2和expr3生成一个字符串,则 结果是一个字符串。
  • 如果expr2和expr3都是字符串,则 如果任一字符串是 区分大小写。
  • 如果expr2和expr3产生浮点数 值,则结果为浮点值。
  • 如果expr2和expr3生成一个整数,则 结果是一个整数。

结果

9.空 if/else 构造  IFNULL()

脚本

SELECT IFNULL(1, 0),
       IFNULL(NULL, 10),
       IFNULL(1 / 0, 10),
       IFNULL(1 / 0, 'yes');

分析

IFNULL(expr1,expr2)

如果expr1不符合要求字则返回expr2

结果

10.值是否在一组值内    IN()

脚本

SELECT 2 IN (0, 3, 5, 7), (3, 4) IN ((1, 2), (3, 4));

分析

expr in (value1,...)

看expr是否能在后面找到对应的value值

结果

11.返回 IP 地址的数值        INET_ATON()

脚本

SELECT INET_ATON('192.168.153.188');

分析

给定 IPv4 网络的点分四边形表示形式 地址为字符串,返回一个整数,该整数表示 网络字节顺序中地址的数值(大 字节序)

结果

12.从数值返回 IP 地址         INET_NTOA()

脚本

SELECT INET_NTOA(3232274876);

分析

给定一个按网络字节顺序排列的数字 IPv4 网络地址, 返回地址的点分四边形字符串表示形式 作为连接字符集中的字符串

结果

13.返回 IPv6 地址的数值       INET6_ATON()

脚本

SELECT HEX(INET6_ATON('fdfe::5a55:caff:fefa:9089'));

分析

给定字符串形式的 IPv6 或 IPv4 网络地址,返回 表示地址数值的二进制字符串 按网络字节顺序(大端序)

结果

14.从数值返回 IPv6 地址       INET6_NTOA()

脚本

SELECT INET6_NTOA(INET6_ATON('fdfe::5a55:caff:fefa:9089'));

分析

给定以数字表示的 IPv6 或 IPv4 网络地址 形式为二进制字符串,返回 连接字符集中字符串形式的地址

结果

15.在指定位置插入子字符串,最多插入指定数量的字符        INSERT()

脚本

SELECT INSERT('Quadratic', 3, 4, 'What');

分析

INSERT(str,pos,len,newstr)

把pos位置往后的字符替换为newstr,替换长度为len

结果

16.返回小于第一个参数的索引论点        INTERVAL()

脚本

SELECT INTERVAL(23, 1, 15, 17, 30, 44, 200);

分析

INTERVAL(N,N1,N2,N3,..........)

其中,N是要判断的数值,N1,N2,N3,...是分段的间隔。

这个函数的返回值是段的位置:

如果N

如果N1<=N

如果N2<=N

所以,区间是前闭后开的。

结果

17.针对布尔值测试值        IS()

脚本

SELECT 1 IS TRUE, 0 IS FALSE, NULL IS UNKNOWN;

结果

18.命名锁是否可用        IS_FREE_LOCK()

脚本

SELECT IS_FREE_LOCK('lock1');

分析

检查锁str是否可用,返回结果为0,说明指定名称的锁正在被使用。返回1则说明这个锁尚未被使用。

结果

19.参数是否为 IPv4 地址        IS_IPV4()

脚本

SELECT IS_IPV4('192.168.152.188'), IS_IPV4('192.168.152.256');

分析

如果参数是指定的有效 IPv4 地址,则返回 1 一个字符串,否则为 0

结果

20.参数是否为与 IPv4 兼容的地址        IS_IPV4_COMPAT()

脚本

SELECT IS_IPV4_COMPAT(INET6_ATON('::10.0.5.9')),IS_IPV4_COMPAT(INET6_ATON('::ffff:10.0.5.9'));

分析

IS_IPV4_COMPAT () 函数检查一个数字形式的 IPv6 地址是否是一个 IPv4 兼容的 IPv6 地址,如果是返回 1 ,否则返回 0 。 如果参数为 NULL ,该函数将返回 NULL

结果

21.参数是否为 IPv4 映射地址        IS_IPV4_MAPPED()

脚本

SELECT IS_IPV4_MAPPED(INET6_ATON('::10.0.5.9')),IS_IPV4_MAPPED(INET6_ATON('::ffff:10.0.5.9'));

分析

MySQL中的此函数采用以数字形式表示为二进制字符串的IPv6地址,由INET6_ATON函数返回。如果参数是有效的IPv4映射的IPv6地址,则返回1,否则返回0。 IPv4映射地址的一般格式是:: ffff:ipv4_address。

结果

22.参数是否为 IPv6 地址        IS_IPV6()

脚本

SELECT IS_IPV6('10.0.5.9'), IS_IPV6('::1');

分析

如果参数是指定的有效 IPv6 地址,则返回 1 一个字符串,否则为 0

结果

23.针对布尔值测试值        IS NOT()

脚本

SELECT 1 IS NOT UNKNOWN, 0 IS NOT UNKNOWN, NULL IS NOT UNKNOWN;

结果

24.非空值测试        IS NOT NULL()

脚本

SELECT 1 IS NOT NULL, 0 IS NOT NULL, NULL IS NOT NULL;

结果

25.空值测试        IS NULL()

脚本

SELECT 1 IS NULL, 0 IS NULL, NULL IS NULL;

结果

26.命名锁是否正在使用中;如果返回连接标识符,则返回真        IS_USED_LOCK()

脚本

SELECT IS_USED_LOCK('lock1');

分析

IS_USED_LOCK(str) 检查锁str是否正在被使用,返回结果为持有锁的连接的连接ID,表示给定名称的锁正在被该连接使用,若锁没有被使用返回null。

结果

27.参数是否为有效的 UUID        IS_UUID()

脚本

SELECT IS_UUID('6ccd780c-baba-1026-9564-5b8c656024db');

分析

如果参数是有效的字符串格式 UUID,则返回 1;如果 参数不是有效的 UUID

“有效”表示值的格式为 可以解析。也就是说,它具有正确的长度并包含 仅允许的字符(任何十六进制数字 字母大小写,以及可选的破折号和大括号)。这 格式是最常见的:

aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee

还允许使用以下其他格式:

aaaaaaaabbbbccccddddeeeeeeeeeeee
{aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee}

官方解释UUID 

结果

28.测试参数是否为 NULL        ISNULL()

脚本

SELECT ISNULL(1+1),isnull(1/0);

结果

29.创建 JSON 数组        JSON_ARRAY()

脚本

SELECT JSON_ARRAY(1, "abc", NULL, TRUE, CURTIME());

分析

JSON_ARRAY(value1[, value2[, ...]])
参数

value1[, value2[, ...]]

可选的。一些值,他们将被放在 JSON 数组中。

JSON_ARRAY()函数评估参数中的所有的值,并返回一个包含了所有参数的 JSON 数组。

这里可能有一些转换发生:

  • TRUE被转换为true
  • FALSE被转换为false
  • NULL被转换为null
  • 日期,时间,日期时间 被转换为 字符串

结果

30.将数据追加到 JSON 文档        JSON_ARRAY_APPEND()

脚本

SELECT JSON_ARRAY_APPEND('[1, 2, 3]', '$', 4);

分析

参数

json

必需的。被修改的 JSON 文档。

path

必需的。添加新元素的路径。一个有效的路径表达式,它不能包含 或 。***

value

必需的。被添加到数组的新元素值。

结果

31.插入到 JSON 数组中        JSON_ARRAY_INSERT()

脚本

SET @json = '[1, [2, 3], {"a": [4, 5]}]';
SELECT JSON_ARRAY_INSERT(@json, '$[0]', 0);

分析

JSON_ARRAY_INSERT(json, path, value[, path2, value2] ...)

参数

json

必需的。被修改的 JSON 文档。

path

必需的。插入新元素的数组元素位置。一个有效的路径表达式,它不能包含 或 。比如 和 表示在数组的开头插入新元素。***$[0]$.a[0]

value

必需的。入到数组的新元素值。

结果

32.将结果集作为单个 JSON 数组返回        JSON_ARRAYAGG()

脚本

CREATE TABLE `student_score` (
    `id` INT PRIMARY KEY AUTO_INCREMENT,
    `name` VARCHAR(255) NOT NULL,
    `subject` VARCHAR(255) NOT NULL,
    `score` INT NOT NULL
);

INSERT INTO `student_score` (`name`, `subject`, `score`)
VALUES
    ('Tom', 'Math', 80),
    ('Tom', 'English', 90),
    ('Tim', 'English', 98);

SELECT
    name AS `Name`,
    JSON_ARRAYAGG(subject) AS `Subjects`
FROM student_score
GROUP BY name;

分析

JSON_ARRAYAGG(expr)

我们通常在 MySQL 中按如下方式使用 函数:JSON_ARRAYAGG()

SELECT JSON_ARRAYAGG(expr), ...
FROM table_name
[WHERE ...]
[GROUP BY group_expr1, group_expr2, ...];

参数

expr

必须的。它可以是一个列名,也可以是一个表达式。

结果

33.JSON 文档是否在路径中包含特定对象        JSON_CONTAINS()

脚本

SELECT
    JSON_CONTAINS('[1, 2, [3, 4]]', '2'),
    JSON_CONTAINS('[1, 2, [3, 4]]', '2', '$[2]');

分析

JSON_CONTAINS(target_json, candidate_json)
JSON_CONTAINS(target_json, candidate_json, path)

参数

target_json

必需的。一个 JSON 文档。

candidate_json

必需的。被包含的 JSON 文档。

path

可选的。一个路径表达式。

结果

34.JSON 文档是否在路径中包含任何数据        JSON_CONTAINS_PATH()

脚本

SELECT
    JSON_CONTAINS_PATH('[1, 2, {"x": 3}]', 'one', '$[0]', '$[3]'),
    JSON_CONTAINS_PATH('[1, 2, {"x": 3}]', 'all', '$[0]', '$[3]');

分析

JSON_CONTAINS_PATH(json, one_or_all, path[, path])

参数

json

必需的。一个 JSON 文档。

one_or_all

必需的。可用值:, 。它指示是否检查所有的路径。'one''all'

path

必需的。您应该至少指定一个路径表达式。

结果

35.JSON 文档的最大深度        JSON_DEPTH()

脚本

SELECT JSON_DEPTH('[]'), JSON_DEPTH('[1, 2]'), JSON_DEPTH('[1, [2, 3]]');

分析

JSON_DEPTH(json)

参数

json

必需的。一个 JSON 文档。

  • 一个空的数组、空的对象或者纯值的深度是 1。
  • 一个仅包含深度为 1 的元素的数组的深度是 2。
  • 一个所有成员的值的深度为 1 的对象的深度是 2。
  • 除此之外的其他 JSON 文档的深度都大于 2.

结果

36.从 JSON 文档返回数据        JSON_EXTRTACT()

脚本

SELECT JSON_EXTRACT('[1, 2, {"x": 3}]', '$[2].x', '$[1]', '$[0]');

分析

JSON_EXTRACT(json, path, ...)

参数

json

必需的。一个 JSON 文档。

path

必需的。您应该至少指定一个路径表达式。

结果

37.将数据插入 JSON 文档        JSON_INSERT()

脚本

SET @array = '[1, [2, 3], {"a": [4, 5]}]';
# 在数组的开头插入一个元素
SELECT JSON_INSERT(@array, '$[0]', 0, '$[3]', 6);

分析

JSON_INSERT(json, path, value[, path2, value2] ...)

参数

json

必需的。被修改的 JSON 文档。

path

必需的。一个有效的路径表达式。

value

必需的。插入的数据。

结果

38.来自 JSON 文档的键数组        JSON_KEYS()

脚本

SELECT JSON_KEYS('{"x": 1, "y": 2, "z": 3}');

分析

JSON_KEYS(json)
JSON_KEYS(json, path)

参数

json

必需的。一个 JSON 对象文档。

path

可选的。路径表达式。

结果

39.JSON 文档中的元素数        JSON_LENGTH()

脚本

SELECT
    JSON_LENGTH('1'),
    JSON_LENGTH('true'),
    JSON_LENGTH('[1, 2]'),
    JSON_LENGTH('{"x": 1, "y": 2}') ;

分析

JSON_LENGTH(json)
JSON_LENGTH(json, path)

参数

json

必需的。一个 JSON 文档。

path

可选的。一个路径表达式。

如果指定了 , 函数返回 JSON 文档中由路径指定的值的长度,否则返回 JSON 文档的长度。函数按照如下规则计算 JSON 文档的长度:pathJSON_LENGTH()JSON_LENGTH()

  • 纯值的长度是 1。比如, , , , , 的长度都是 1。1'"x"'truefalsenull
  • 数组的长度是数组元素的数量。比如, 的长度是 2。[1, 2]
  • 对象的长度是对象成员的数量。比如, 的长度是 1。{"x": 1}
  • 内嵌的数组或对象不参与计算长度。比如, 的长度是 1。{"x": [1, 2]}

如果存在以下的情况, 函数将返回 :JSON_LENGTH()NULL

  • 如果 JSON 文档中不存在指定的路径。
  • 如果任意一个参数为 。NULL

结果

40.合并 JSON 文档,替换重复键的值        JSON_MERGE_PATCH()

脚本

SELECT
    JSON_MERGE_PATCH('[1, 2]', '[2, 3]') as `[1, 2] + [2, 3]`,
    JSON_MERGE_PATCH('{"x": 1, "z": 7}', '{"x": 2, "y": 3}'),
   JSON_MERGE_PATCH('{"x": 1, "z": 7}', '{"x": 2, "z": null}');

分析

JSON_MERGE_PATCH(json1, json2, ...)

参数

json1

必需的。一个 JSON 对象文档。

json2

必需的。一个 JSON 对象文档。

MySQL 函数返回一个由参数指定的多个 JSON 文档合并后的 JSON 文档。执行的是替换合并,即在相同键值时,只保留后面的值。合并的规则如下:JSON_MERGE_PATCH()JSON_MERGE_PATCH()

  1. 如果第一个参数不是对象,则合并的结果与第二个参数合并空对象的结果相同。

  2. 如果第二个参数不是对象,则合并的结果为第二个参数。

  3. 如果两个参数都是对象,则合并的对象具有以下成员:

    • 只存在于第一个对象中的成员
    • 只存在于第二个对象中且值不是 的成员null
    • 存在于第二个对象且值不是 ,并且在第一个对象中有对应的相同键的成员null

也就是说,只有两个对象合并的结果才是对象。如果两个参数为不同的 JSON 类型或者都不是 JSON 对象,则合并结果是第二个参数。

结果

41.合并 JSON 文档,保留重复的键        JSON_MERGE_PRESERVE()

脚本

SELECT JSON_MERGE_PRESERVE('[1, 2]', '[2, 3]', '[3, 4, 5]') as 合并数组,
       JSON_MERGE_PRESERVE('{"x": 1}', '{"x": 2, "y": 3}') as 合并对象,
       JSON_MERGE_PRESERVE('1', 'true', '"hello"', 'null') as 合并纯值,
        JSON_MERGE_PRESERVE('{"x": 1}', '[1, 2]') as 合并数组和对象;

分析

JSON_MERGE_PRESERVE(json1, json2, ...)

参数

json1

必需的。一个 JSON 对象文档。

json2

必需的。一个 JSON 对象文档。

MySQL 函数返回一个由参数指定的多个 JSON 文档合并后的 JSON 文档。按照如下规则合并多个 JSON 文档:JSON_MERGE_PRESERVE()JSON_MERGE_PRESERVE()

  • 两个数组合并为一个数组,保留所有数组中的元素。
  • 两个对象合并为一个对象,保留所有的键和值。
  • 一个纯值会被包装成一个数组并作为数组进行合并
  • 对象和数组合并时,会将对象包装到一个数组中并作为数组进行合并。

结果

42.创建 JSON 对象        JSON_OBJECT()

脚本

SELECT JSON_OBJECT(
        'name',
        'Tim',
        'age',
        20,
        'friend',
        JSON_OBJECT('name', 'Jim', 'age', 20),
        'hobby',
        JSON_ARRAY('games', 'sports')
    ) ;

分析

JSON_OBJECT(key, value[, key2, value2, ...])

参数

key

必需的。对象中的键。

value

必需的。对象中的 的值key

结果

43.将结果集作为单个JSON 对象返回        JSON_OBJECTAGG()

脚本

CREATE TABLE `student_score` (
    `id` INT PRIMARY KEY AUTO_INCREMENT,
    `name` VARCHAR(255) NOT NULL,
    `subject` VARCHAR(255) NOT NULL,
    `score` INT NOT NULL
);

INSERT INTO `student_score` (`name`, `subject`, `score`)
VALUES
    ('Tom', 'Math', 80),
    ('Tom', 'English', 90),
    ('Tim', 'English', 98);

SELECT
    name AS `Name`,
    JSON_OBJECTAGG(subject, score) AS `Scores`
FROM student_score
GROUP BY name;

分析

SELECT JSON_OBJECTAGG(key_expr, value_expr), ...
FROM table_name
[WHERE ...]
[GROUP BY group_expr1, group_expr2, ...];

参数

key_expr

必须的。它的值作为结果对象中的键值对中的键。它可以是一个列名,也可以是一个表达式。

value_expr

可选的。它的值作为结果对象中的键值对中的值。它可以是一个列名,也可以是一个表达式。

结果

44.比较两个JSON文档是否拥有任何一个相同键值对或数组元素 JSON_OVERLAPS()

脚本

SELECT JSON_OVERLAPS('[1, 2, 3]', '[3, 4, 5]') as 比较数组,
       JSON_OVERLAPS('[1, 2, 3]', '[3, 4, 5]') as 比较对象,
       JSON_OVERLAPS('[1, 2, 3]', '[3, 4, 5]') as 比较纯值和数组,
        JSON_OVERLAPS('1', '1') as 比较纯值;

分析

JSON_OVERLAPS(json1, json2)

参数

json1

必需的。一个 JSON 文档。

json2

必需的。另一个 JSON 文档。

  • 比较两个数组时,如果两个数组至少有一个相同的元素返回 ,否则返回 。10
  • 比较两个对象时,如果两个对象至少有一个相同的键值对返回 ,否则返回 。10
  • 比较两个纯值时,如果两个值相同返回 ,否则返回 。10
  • 比较纯值和数组时,如果值是这个数组中的直接元素返回 ,否则返回 。10
  • 比较纯值和对象的结果为 。0
  • 比较数组和对象的结果为 。0
  • JSON_OVERLAPS()不会对参数的数据类型进行转换。

结果

45.以可读的格式打印 JSON 文档        JSON_PRETTY()

脚本

SELECT JSON_PRETTY('[1, 2, 3]');

分析

JSON_PRETTY(json)

参数

json

必需的。一个 JSON 文档或 JSON 类型的值。

结果

MySQL --- 函数大全3_第2张图片

46.引用 JSON 文档        JSON_QUOTE()

脚本

SELECT
    JSON_QUOTE('123'),
    JSON_QUOTE('NULL'),
    JSON_QUOTE('"NULL"');

分析

JSON_QUOTE(str)

参数

str

必需的。一个字符串。

下表中的特殊字符将使用反斜杠转义:

转义序列 序列表示的字符
\" 双引号"
\b 退格字符
\f 换页符
\n 换行符
\r 回车符
\t 制表符
\\ 反斜杠\
\uXXXX Unicode 值 的 UTF-8 字节XXXX

结果

47.从 JSON 文档中删除数据        JSON_REMOVE()

脚本

SELECT JSON_REMOVE('[0, 1, 2, [3, 4]]', '$[0]', '$[2]') as 从数组中删除,
       JSON_REMOVE('{"x": 1, "y": 2}', '$.x') as 从对象中删除;

分析

JSON_REMOVE(json, path[, path] ...)

参数

json

必需的。一个 JSON 文档。

path

必需的。一个有效的路径表达式

结果

48.替换 JSON 文档中的值        JSON_REPLACE()

脚本

SET @obj = '{"x": 1}';
SELECT JSON_REPLACE(@obj, '$.x', 'true');

分析

JSON_REPLACE(json, path, value[, path2, value2] ...)

参数

json

必需的。被修改的 JSON 文档。

path

必需的。一个有效的路径表达式

value

必需的。新的数据。

结果

49.根据指定的 JSON 模式验证一个 JSON 文档     JSON_SCHEMA_VALID()

脚本

SET @schema = '{
      "id": "http://json-schema.org/geo",
      "$schema": "http://json-schema.org/draft-04/schema#",
      "description": "A geographical coordinate",
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -90,
          "maximum": 90
        },
        "y": {
          "type": "number",
          "minimum": -180,
          "maximum": 180
        }
      },
      "required": ["x", "y"]
    }';

SET @json_doc = '{"x": 1, "y": 2}';


SELECT JSON_SCHEMA_VALID(@schema, @json_doc);

分析

JSON_SCHEMA_VALID(schema, json_doc)

参数

schema

必需的。一个 JSON 模式。它必须是一个有效的 JSON 对象。

json_doc

必需的。被验证的 JSON 文档。

结果

50.根据指定的 JSON 模式验证一个 JSON 文档,并返回一个验证报告        JSON_SCHEMA_VALIDATION_REPORT()

脚本

SET @schema = '{
      "id": "http://json-schema.org/geo",
      "$schema": "http://json-schema.org/draft-04/schema#",
      "description": "A geographical coordinate",
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -90,
          "maximum": 90
        },
        "y": {
          "type": "number",
          "minimum": -180,
          "maximum": 180
        }
      },
      "required": ["x", "y"]
    }';

SET @json_doc = '{"x": 1, "y": 2}';


SELECT JSON_SCHEMA_VALIDATION_REPORT(@schema, @json_doc) AS Report ;

分析

JSON_SCHEMA_VALIDATION_REPORT(schema, json_doc)

参数

schema

必需的。一个 JSON 模式。它必须是一个有效的 JSON 对象。

json_doc

必需的。被验证的 JSON 文档。

结果

函数大全1

函数大全2

函数大全4

函数大全5

函数大全6

函数大全7

函数大全8

你可能感兴趣的:(mysql,mysql,数据库)