MySQL --- 函数大全3
目錄
1.返回串聯(lián)字符串? ?GROUP_CONCAT()
2.返回子字符串第一次出現(xiàn)的索引? INSTR()
3.如果子集中的所有 GTID 也在集合中,返回 true,否則返回false? ?GTID_SUBSET()?
4.返回集合中不在子集中的所有 GTID? ?GTID_SUBTRACT()
5.十進(jìn)制或字符串值的十六進(jìn)制表示形式? ?HEX()
6.提取小時? ?HOUR()
7.重癥監(jiān)護(hù)室?guī)彀姹? ?ICU_SUBTRACT()
8.如果/否則構(gòu)造? IF()
9.空 if/else 構(gòu)造? IFNULL()
10.值是否在一組值內(nèi)? ? IN()
11.返回 IP 地址的數(shù)值????????INET_ATON()
12.從數(shù)值返回 IP 地址? ? ? ? ?INET_NTOA()
13.返回 IPv6 地址的數(shù)值???????INET6_ATON()
14.從數(shù)值返回 IPv6 地址? ? ? ?INET6_NTOA()
15.在指定位置插入子字符串,最多插入指定數(shù)量的字符? ? ? ? INSERT()
16.返回小于第一個參數(shù)的索引論點? ? ? ? INTERVAL()
17.針對布爾值測試值? ? ? ? IS()
18.命名鎖是否可用? ? ? ? IS_FREE_LOCK()
19.參數(shù)是否為 IPv4 地址? ? ? ? IS_IPV4()
20.參數(shù)是否為與 IPv4 兼容的地址? ? ? ? IS_IPV4_COMPAT()
21.參數(shù)是否為 IPv4 映射地址????????IS_IPV4_MAPPED()
22.參數(shù)是否為 IPv6 地址? ? ? ? IS_IPV6()
23.針對布爾值測試值? ? ? ? IS NOT()
24.非空值測試? ? ? ? IS NOT NULL()
25.空值測試? ? ? ? IS NULL()
26.命名鎖是否正在使用中;如果返回連接標(biāo)識符,則返回真? ? ? ? IS_USED_LOCK()
27.參數(shù)是否為有效的 UUID? ? ? ? IS_UUID()
28.測試參數(shù)是否為 NULL? ? ? ? ISNULL()
29.創(chuàng)建 JSON 數(shù)組? ? ? ? JSON_ARRAY()
30.將數(shù)據(jù)追加到 JSON 文檔????????JSON_ARRAY_APPEND()
31.插入到 JSON 數(shù)組中? ? ? ? JSON_ARRAY_INSERT()
32.將結(jié)果集作為單個 JSON 數(shù)組返回? ? ? ? JSON_ARRAYAGG()
33.JSON 文檔是否在路徑中包含特定對象? ? ? ? JSON_CONTAINS()
34.JSON 文檔是否在路徑中包含任何數(shù)據(jù)????????JSON_CONTAINS_PATH()
35.JSON 文檔的最大深度? ? ? ? JSON_DEPTH()
36.從 JSON 文檔返回數(shù)據(jù)? ? ? ? JSON_EXTRTACT()
37.將數(shù)據(jù)插入 JSON 文檔? ? ? ? JSON_INSERT()
38.來自 JSON 文檔的鍵數(shù)組? ? ? ? JSON_KEYS()
39.JSON 文檔中的元素數(shù)? ? ? ? JSON_LENGTH()
40.合并 JSON 文檔,替換重復(fù)鍵的值? ? ? ? JSON_MERGE_PATCH()
41.合并 JSON 文檔,保留重復(fù)的鍵????????JSON_MERGE_PRESERVE()
42.創(chuàng)建 JSON 對象? ? ? ? JSON_OBJECT()
43.將結(jié)果集作為單個JSON 對象返回? ? ? ? JSON_OBJECTAGG()
44.比較兩個JSON文檔是否擁有任何一個相同鍵值對或數(shù)組元素 JSON_OVERLAPS()
45.以可讀的格式打印 JSON 文檔? ? ? ? JSON_PRETTY()
46.引用 JSON 文檔? ? ? ? JSON_QUOTE()
47.從 JSON 文檔中刪除數(shù)據(jù)? ? ? ? JSON_REMOVE()
48.替換 JSON 文檔中的值? ? ? ? JSON_REPLACE()
49.根據(jù)指定的 JSON 模式驗證一個 JSON 文檔 ? ? JSON_SCHEMA_VALID()
50.根據(jù)指定的 JSON 模式驗證一個 JSON 文檔,并返回一個驗證報告? ? ? ? JSON_SCHEMA_VALIDATION_REPORT()
1.返回串聯(lián)字符串? ?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, '財務(wù)部'),('王飛飛', 5800, '財務(wù)部'),('劉小貝', 5700, '人事部'),('王大鵬', 6700, '人事部'),('劉云云', 7500, '銷售部'),('劉云鵬', 7200, '銷售部');select department,group_concat(emp_name) from emp group by department;分析
列轉(zhuǎn)行
結(jié)果
2.返回子字符串第一次出現(xiàn)的索引? INSTR()
腳本
SELECT INSTR('foobarbar', 'bar'), INSTR('xbar', 'foobar');分析
INSTR(str ,substr)
返回字符串 str 中子字符串 substr 第一次出現(xiàn)的位置
結(jié)果
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)
給定兩組全局事務(wù)標(biāo)識符set1和set2,如果set1中的所有g(shù)tid也在set2中,則返回true。否則返回false。
結(jié)果
4.返回集合中不在子集中的所有 GTID? ?GTID_SUBTRACT()
腳本
SELECT GTID_SUBTRACT( '3E11FA47-71CA-11E1-9E33-C80AA9429562:21-57','3E11FA47-71CA-11E1-9E33-C80AA9429562:28' );分析
給定兩組全局事務(wù)標(biāo)識符set1和set2,只返回set1中不屬于set2的gtid。
結(jié)果
5.十進(jìn)制或字符串值的十六進(jìn)制表示形式? ?HEX()
腳本
SELECT HEX('abc'),HEX(123);結(jié)果
6.提取小時? ?HOUR()
腳本
select hour('2022-12-12 15:20:30')結(jié)果
7.重癥監(jiān)護(hù)室?guī)彀姹? ?ICU_SUBTRACT()
腳本
SELECT ICU_VERSION();分析
ICU_VERSION()函數(shù)返回用于支持正則表達(dá)式操作的 Unicode 國際組件 (ICU) 庫的版本。
結(jié)果
8.如果/否則構(gòu)造? IF()
腳本
SELECT IF(1<2,'yes','no');分析
IF(expr1,expr2,expr3)
- 如果expr2和expr3生成一個字符串,則?結(jié)果是一個字符串。
- 如果expr2和expr3都是字符串,則?如果任一字符串是 區(qū)分大小寫。
- 如果expr2和expr3產(chǎn)生浮點數(shù)?值,則結(jié)果為浮點值。
- 如果expr2和expr3生成一個整數(shù),則?結(jié)果是一個整數(shù)。
結(jié)果
9.空 if/else 構(gòu)造? IFNULL()
腳本
SELECT IFNULL(1, 0),IFNULL(NULL, 10),IFNULL(1 / 0, 10),IFNULL(1 / 0, 'yes');分析
IFNULL(expr1,expr2)
如果expr1不符合要求字則返回expr2
結(jié)果
10.值是否在一組值內(nèi)? ? IN()
腳本
SELECT 2 IN (0, 3, 5, 7), (3, 4) IN ((1, 2), (3, 4));分析
expr in (value1,...)
看expr是否能在后面找到對應(yīng)的value值
結(jié)果
11.返回 IP 地址的數(shù)值????????INET_ATON()
腳本
SELECT INET_ATON('192.168.153.188');分析
給定 IPv4 網(wǎng)絡(luò)的點分四邊形表示形式 地址為字符串,返回一個整數(shù),該整數(shù)表示 網(wǎng)絡(luò)字節(jié)順序中地址的數(shù)值(大 字節(jié)序)
結(jié)果
12.從數(shù)值返回 IP 地址? ? ? ? ?INET_NTOA()
腳本
SELECT INET_NTOA(3232274876);分析
給定一個按網(wǎng)絡(luò)字節(jié)順序排列的數(shù)字 IPv4 網(wǎng)絡(luò)地址, 返回地址的點分四邊形字符串表示形式 作為連接字符集中的字符串
結(jié)果
13.返回 IPv6 地址的數(shù)值???????INET6_ATON()
腳本
SELECT HEX(INET6_ATON('fdfe::5a55:caff:fefa:9089'));分析
給定字符串形式的 IPv6 或 IPv4 網(wǎng)絡(luò)地址,返回 表示地址數(shù)值的二進(jìn)制字符串 按網(wǎng)絡(luò)字節(jié)順序(大端序)
結(jié)果
14.從數(shù)值返回 IPv6 地址? ? ? ?INET6_NTOA()
腳本
SELECT INET6_NTOA(INET6_ATON('fdfe::5a55:caff:fefa:9089'));分析
給定以數(shù)字表示的 IPv6 或 IPv4 網(wǎng)絡(luò)地址 形式為二進(jìn)制字符串,返回 連接字符集中字符串形式的地址
結(jié)果
15.在指定位置插入子字符串,最多插入指定數(shù)量的字符? ? ? ? INSERT()
腳本
SELECT INSERT('Quadratic', 3, 4, 'What');分析
INSERT(str,pos,len,newstr)
把pos位置往后的字符替換為newstr,替換長度為len
結(jié)果
16.返回小于第一個參數(shù)的索引論點? ? ? ? INTERVAL()
腳本
SELECT INTERVAL(23, 1, 15, 17, 30, 44, 200);分析
INTERVAL(N,N1,N2,N3,..........)
其中,N是要判斷的數(shù)值,N1,N2,N3,...是分段的間隔。
這個函數(shù)的返回值是段的位置:
如果N<N1,則返回0,
如果N1<=N<N2,則返回1,
如果N2<=N<N3,則返回2。
所以,區(qū)間是前閉后開的。
結(jié)果
17.針對布爾值測試值? ? ? ? IS()
腳本
SELECT 1 IS TRUE, 0 IS FALSE, NULL IS UNKNOWN;結(jié)果
18.命名鎖是否可用? ? ? ? IS_FREE_LOCK()
腳本
SELECT IS_FREE_LOCK('lock1');分析
檢查鎖str是否可用,返回結(jié)果為0,說明指定名稱的鎖正在被使用。返回1則說明這個鎖尚未被使用。
結(jié)果
19.參數(shù)是否為 IPv4 地址? ? ? ? IS_IPV4()
腳本
SELECT IS_IPV4('192.168.152.188'), IS_IPV4('192.168.152.256');分析
如果參數(shù)是指定的有效 IPv4 地址,則返回 1 一個字符串,否則為 0
結(jié)果
20.參數(shù)是否為與 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 () 函數(shù)檢查一個數(shù)字形式的 IPv6 地址是否是一個 IPv4 兼容的 IPv6 地址,如果是返回 1 ,否則返回 0?。 如果參數(shù)為 NULL ,該函數(shù)將返回 NULL
結(jié)果
21.參數(shù)是否為 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中的此函數(shù)采用以數(shù)字形式表示為二進(jìn)制字符串的IPv6地址,由INET6_ATON函數(shù)返回。如果參數(shù)是有效的IPv4映射的IPv6地址,則返回1,否則返回0。 IPv4映射地址的一般格式是:: ffff:ipv4_address。
結(jié)果
22.參數(shù)是否為 IPv6 地址? ? ? ? IS_IPV6()
腳本
SELECT IS_IPV6('10.0.5.9'), IS_IPV6('::1');分析
如果參數(shù)是指定的有效 IPv6 地址,則返回 1 一個字符串,否則為 0
結(jié)果
23.針對布爾值測試值? ? ? ? IS NOT()
腳本
SELECT 1 IS NOT UNKNOWN, 0 IS NOT UNKNOWN, NULL IS NOT UNKNOWN;結(jié)果
24.非空值測試? ? ? ? IS NOT NULL()
腳本
SELECT 1 IS NOT NULL, 0 IS NOT NULL, NULL IS NOT NULL;結(jié)果
25.空值測試? ? ? ? IS NULL()
腳本
SELECT 1 IS NULL, 0 IS NULL, NULL IS NULL;結(jié)果
26.命名鎖是否正在使用中;如果返回連接標(biāo)識符,則返回真? ? ? ? IS_USED_LOCK()
腳本
SELECT IS_USED_LOCK('lock1');分析
IS_USED_LOCK(str) 檢查鎖str是否正在被使用,返回結(jié)果為持有鎖的連接的連接ID,表示給定名稱的鎖正在被該連接使用,若鎖沒有被使用返回null。
結(jié)果
27.參數(shù)是否為有效的 UUID? ? ? ? IS_UUID()
腳本
SELECT IS_UUID('6ccd780c-baba-1026-9564-5b8c656024db');分析
如果參數(shù)是有效的字符串格式 UUID,則返回 1;如果 參數(shù)不是有效的 UUID
“有效”表示值的格式為 可以解析。也就是說,它具有正確的長度并包含 僅允許的字符(任何十六進(jìn)制數(shù)字 字母大小寫,以及可選的破折號和大括號)。這 格式是最常見的:
aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee還允許使用以下其他格式:
aaaaaaaabbbbccccddddeeeeeeeeeeee {aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee}官方解釋UUID?
結(jié)果
28.測試參數(shù)是否為 NULL? ? ? ? ISNULL()
腳本
SELECT ISNULL(1+1),isnull(1/0);結(jié)果
29.創(chuàng)建 JSON 數(shù)組? ? ? ? JSON_ARRAY()
腳本
SELECT JSON_ARRAY(1, "abc", NULL, TRUE, CURTIME());分析
JSON_ARRAY(value1[, value2[, ...]])
參數(shù)
value1[, value2[, ...]]
可選的。一些值,他們將被放在 JSON 數(shù)組中。
JSON_ARRAY()函數(shù)評估參數(shù)中的所有的值,并返回一個包含了所有參數(shù)的 JSON 數(shù)組。
這里可能有一些轉(zhuǎn)換發(fā)生:
- TRUE被轉(zhuǎn)換為true
- FALSE被轉(zhuǎn)換為false
- NULL被轉(zhuǎn)換為null
- 日期,時間,日期時間 被轉(zhuǎn)換為 字符串
結(jié)果
30.將數(shù)據(jù)追加到 JSON 文檔????????JSON_ARRAY_APPEND()
腳本
SELECT JSON_ARRAY_APPEND('[1, 2, 3]', '$', 4);分析
參數(shù)
json
必需的。被修改的 JSON 文檔。
path
必需的。添加新元素的路徑。一個有效的路徑表達(dá)式,它不能包含?或?。***
value
必需的。被添加到數(shù)組的新元素值。
結(jié)果
31.插入到 JSON 數(shù)組中? ? ? ? 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] ...)參數(shù)
json
必需的。被修改的 JSON 文檔。
path
必需的。插入新元素的數(shù)組元素位置。一個有效的路徑表達(dá)式,它不能包含?或?。比如?和?表示在數(shù)組的開頭插入新元素。***$[0]$.a[0]
value
必需的。入到數(shù)組的新元素值。
結(jié)果
32.將結(jié)果集作為單個 JSON 數(shù)組返回? ? ? ? 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);SELECTname AS `Name`,JSON_ARRAYAGG(subject) AS `Subjects` FROM student_score GROUP BY name;分析
JSON_ARRAYAGG(expr)我們通常在 MySQL 中按如下方式使用 函數(shù):JSON_ARRAYAGG()
SELECT JSON_ARRAYAGG(expr), ... FROM table_name [WHERE ...] [GROUP BY group_expr1, group_expr2, ...];參數(shù)
expr
必須的。它可以是一個列名,也可以是一個表達(dá)式。
結(jié)果
33.JSON 文檔是否在路徑中包含特定對象? ? ? ? JSON_CONTAINS()
腳本
SELECTJSON_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)參數(shù)
target_json
必需的。一個 JSON 文檔。
candidate_json
必需的。被包含的 JSON 文檔。
path
可選的。一個路徑表達(dá)式。
結(jié)果
34.JSON 文檔是否在路徑中包含任何數(shù)據(jù)????????JSON_CONTAINS_PATH()
腳本
SELECTJSON_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])參數(shù)
json
必需的。一個 JSON 文檔。
one_or_all
必需的。可用值:,?。它指示是否檢查所有的路徑。'one''all'
path
必需的。您應(yīng)該至少指定一個路徑表達(dá)式。
結(jié)果
35.JSON 文檔的最大深度? ? ? ? JSON_DEPTH()
腳本
SELECT JSON_DEPTH('[]'), JSON_DEPTH('[1, 2]'), JSON_DEPTH('[1, [2, 3]]');分析
JSON_DEPTH(json)參數(shù)
json
必需的。一個 JSON 文檔。
- 一個空的數(shù)組、空的對象或者純值的深度是 1。
- 一個僅包含深度為 1 的元素的數(shù)組的深度是 2。
- 一個所有成員的值的深度為 1 的對象的深度是 2。
- 除此之外的其他 JSON 文檔的深度都大于 2.
結(jié)果
36.從 JSON 文檔返回數(shù)據(jù)? ? ? ? JSON_EXTRTACT()
腳本
SELECT JSON_EXTRACT('[1, 2, {"x": 3}]', '$[2].x', '$[1]', '$[0]');分析
JSON_EXTRACT(json, path, ...)參數(shù)
json
必需的。一個 JSON 文檔。
path
必需的。您應(yīng)該至少指定一個路徑表達(dá)式。
結(jié)果
37.將數(shù)據(jù)插入 JSON 文檔? ? ? ? JSON_INSERT()
腳本
SET @array = '[1, [2, 3], {"a": [4, 5]}]'; # 在數(shù)組的開頭插入一個元素 SELECT JSON_INSERT(@array, '$[0]', 0, '$[3]', 6);分析
JSON_INSERT(json, path, value[, path2, value2] ...)參數(shù)
json
必需的。被修改的 JSON 文檔。
path
必需的。一個有效的路徑表達(dá)式。
value
必需的。插入的數(shù)據(jù)。
結(jié)果
38.來自 JSON 文檔的鍵數(shù)組? ? ? ? JSON_KEYS()
腳本
SELECT JSON_KEYS('{"x": 1, "y": 2, "z": 3}');分析
JSON_KEYS(json) JSON_KEYS(json, path)參數(shù)
json
必需的。一個 JSON 對象文檔。
path
可選的。路徑表達(dá)式。
結(jié)果
39.JSON 文檔中的元素數(shù)? ? ? ? JSON_LENGTH()
腳本
SELECTJSON_LENGTH('1'),JSON_LENGTH('true'),JSON_LENGTH('[1, 2]'),JSON_LENGTH('{"x": 1, "y": 2}') ;分析
JSON_LENGTH(json) JSON_LENGTH(json, path)參數(shù)
json
必需的。一個 JSON 文檔。
path
可選的。一個路徑表達(dá)式。
如果指定了 , 函數(shù)返回 JSON 文檔中由路徑指定的值的長度,否則返回 JSON 文檔的長度。函數(shù)按照如下規(guī)則計算 JSON 文檔的長度:pathJSON_LENGTH()JSON_LENGTH()
- 純值的長度是 1。比如,?,?,?,?,?的長度都是 1。1'"x"'truefalsenull
- 數(shù)組的長度是數(shù)組元素的數(shù)量。比如, 的長度是 2。[1, 2]
- 對象的長度是對象成員的數(shù)量。比如, 的長度是 1。{"x": 1}
- 內(nèi)嵌的數(shù)組或?qū)ο蟛粎⑴c計算長度。比如, 的長度是 1。{"x": [1, 2]}
如果存在以下的情況,?函數(shù)將返回?:JSON_LENGTH()NULL
- 如果 JSON 文檔中不存在指定的路徑。
- 如果任意一個參數(shù)為?。NULL
結(jié)果
40.合并 JSON 文檔,替換重復(fù)鍵的值? ? ? ? JSON_MERGE_PATCH()
腳本
SELECTJSON_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, ...)參數(shù)
json1
必需的。一個 JSON 對象文檔。
json2
必需的。一個 JSON 對象文檔。
MySQL 函數(shù)返回一個由參數(shù)指定的多個 JSON 文檔合并后的 JSON 文檔。執(zhí)行的是替換合并,即在相同鍵值時,只保留后面的值。合并的規(guī)則如下:JSON_MERGE_PATCH()JSON_MERGE_PATCH()
如果第一個參數(shù)不是對象,則合并的結(jié)果與第二個參數(shù)合并空對象的結(jié)果相同。
如果第二個參數(shù)不是對象,則合并的結(jié)果為第二個參數(shù)。
如果兩個參數(shù)都是對象,則合并的對象具有以下成員:
- 只存在于第一個對象中的成員
- 只存在于第二個對象中且值不是?的成員null
- 存在于第二個對象且值不是?,并且在第一個對象中有對應(yīng)的相同鍵的成員null
也就是說,只有兩個對象合并的結(jié)果才是對象。如果兩個參數(shù)為不同的 JSON 類型或者都不是 JSON 對象,則合并結(jié)果是第二個參數(shù)。
結(jié)果
41.合并 JSON 文檔,保留重復(fù)的鍵????????JSON_MERGE_PRESERVE()
腳本
SELECT JSON_MERGE_PRESERVE('[1, 2]', '[2, 3]', '[3, 4, 5]') as 合并數(shù)組,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 合并數(shù)組和對象;分析
JSON_MERGE_PRESERVE(json1, json2, ...)參數(shù)
json1
必需的。一個 JSON 對象文檔。
json2
必需的。一個 JSON 對象文檔。
MySQL 函數(shù)返回一個由參數(shù)指定的多個 JSON 文檔合并后的 JSON 文檔。按照如下規(guī)則合并多個 JSON 文檔:JSON_MERGE_PRESERVE()JSON_MERGE_PRESERVE()
- 兩個數(shù)組合并為一個數(shù)組,保留所有數(shù)組中的元素。
- 兩個對象合并為一個對象,保留所有的鍵和值。
- 一個純值會被包裝成一個數(shù)組并作為數(shù)組進(jìn)行合并
- 對象和數(shù)組合并時,會將對象包裝到一個數(shù)組中并作為數(shù)組進(jìn)行合并。
結(jié)果
42.創(chuàng)建 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, ...])參數(shù)
key
必需的。對象中的鍵。
value
必需的。對象中的?的值key
結(jié)果
43.將結(jié)果集作為單個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);SELECTname 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, ...];參數(shù)
key_expr
必須的。它的值作為結(jié)果對象中的鍵值對中的鍵。它可以是一個列名,也可以是一個表達(dá)式。
value_expr
可選的。它的值作為結(jié)果對象中的鍵值對中的值。它可以是一個列名,也可以是一個表達(dá)式。
結(jié)果
44.比較兩個JSON文檔是否擁有任何一個相同鍵值對或數(shù)組元素 JSON_OVERLAPS()
腳本
SELECT JSON_OVERLAPS('[1, 2, 3]', '[3, 4, 5]') as 比較數(shù)組,JSON_OVERLAPS('[1, 2, 3]', '[3, 4, 5]') as 比較對象,JSON_OVERLAPS('[1, 2, 3]', '[3, 4, 5]') as 比較純值和數(shù)組,JSON_OVERLAPS('1', '1') as 比較純值;分析
JSON_OVERLAPS(json1, json2)參數(shù)
json1
必需的。一個 JSON 文檔。
json2
必需的。另一個 JSON 文檔。
- 比較兩個數(shù)組時,如果兩個數(shù)組至少有一個相同的元素返回?,否則返回?。10
- 比較兩個對象時,如果兩個對象至少有一個相同的鍵值對返回?,否則返回?。10
- 比較兩個純值時,如果兩個值相同返回?,否則返回?。10
- 比較純值和數(shù)組時,如果值是這個數(shù)組中的直接元素返回?,否則返回?。10
- 比較純值和對象的結(jié)果為?。0
- 比較數(shù)組和對象的結(jié)果為?。0
- JSON_OVERLAPS()不會對參數(shù)的數(shù)據(jù)類型進(jìn)行轉(zhuǎn)換。
結(jié)果
45.以可讀的格式打印 JSON 文檔? ? ? ? JSON_PRETTY()
腳本
SELECT JSON_PRETTY('[1, 2, 3]');分析
JSON_PRETTY(json)參數(shù)
json
必需的。一個 JSON 文檔或 JSON 類型的值。
結(jié)果
46.引用 JSON 文檔? ? ? ? JSON_QUOTE()
腳本
SELECTJSON_QUOTE('123'),JSON_QUOTE('NULL'),JSON_QUOTE('"NULL"');分析
JSON_QUOTE(str)參數(shù)
str
必需的。一個字符串。
下表中的特殊字符將使用反斜杠轉(zhuǎn)義:
| \" | 雙引號" |
| \b | 退格字符 |
| \f | 換頁符 |
| \n | 換行符 |
| \r | 回車符 |
| \t | 制表符 |
| \\ | 反斜杠\ |
| \uXXXX | Unicode 值 的 UTF-8 字節(jié)XXXX |
結(jié)果
47.從 JSON 文檔中刪除數(shù)據(jù)? ? ? ? JSON_REMOVE()
腳本
SELECT JSON_REMOVE('[0, 1, 2, [3, 4]]', '$[0]', '$[2]') as 從數(shù)組中刪除,JSON_REMOVE('{"x": 1, "y": 2}', '$.x') as 從對象中刪除;分析
JSON_REMOVE(json, path[, path] ...)參數(shù)
json
必需的。一個 JSON 文檔。
path
必需的。一個有效的路徑表達(dá)式
結(jié)果
48.替換 JSON 文檔中的值? ? ? ? JSON_REPLACE()
腳本
SET @obj = '{"x": 1}'; SELECT JSON_REPLACE(@obj, '$.x', 'true');分析
JSON_REPLACE(json, path, value[, path2, value2] ...)參數(shù)
json
必需的。被修改的 JSON 文檔。
path
必需的。一個有效的路徑表達(dá)式
value
必需的。新的數(shù)據(jù)。
結(jié)果
49.根據(jù)指定的 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)參數(shù)
schema
必需的。一個 JSON 模式。它必須是一個有效的 JSON 對象。
json_doc
必需的。被驗證的 JSON 文檔。
結(jié)果
50.根據(jù)指定的 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)參數(shù)
schema
必需的。一個 JSON 模式。它必須是一個有效的 JSON 對象。
json_doc
必需的。被驗證的 JSON 文檔。
結(jié)果
函數(shù)大全1
函數(shù)大全2
函數(shù)大全4
函數(shù)大全5
函數(shù)大全6
函數(shù)大全7
函數(shù)大全8
總結(jié)
以上是生活随笔為你收集整理的MySQL --- 函数大全3的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何使用python批量修改txt文档
- 下一篇: Linux中防火墙firewalld