欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

輕松上手MYSQL之JSON函數(shù)實(shí)現(xiàn)高效數(shù)據(jù)查詢與操作

 更新時(shí)間:2025年02月12日 09:39:25   作者:前端哥  
這篇文章主要介紹了輕松上手MYSQL之JSON函數(shù)實(shí)現(xiàn)高效數(shù)據(jù)查詢與操作的相關(guān)資料,MySQL提供了多個(gè)JSON函數(shù),用于處理和查詢JSON數(shù)據(jù),這些函數(shù)包括JSON_EXTRACT、JSON_UNQUOTE、JSON_KEYS、JSON_ARRAY等,涵蓋了從提取數(shù)據(jù)到驗(yàn)證的各個(gè)方面,需要的朋友可以參考下

一、JSON_EXTRACT 提取指定數(shù)據(jù)

MySQL JSON_EXTRACT() 函數(shù)在 JSON 文檔提取路徑表達(dá)式指定的數(shù)據(jù)并返回。

語(yǔ)法:

JSON_EXTRACT(json, path, ...)

參數(shù)說(shuō)明:

  • json:必需的。一個(gè) JSON 文檔。
  • path:必需的。至少指定一個(gè)路徑表達(dá)式。

返回值:

  • 返回 JSON 文檔中由路徑表達(dá)式匹配的所有的值。
  • 返回NULL情況:
    •  不存在指定的路徑。
    • 任意一個(gè)參數(shù)為 NULL。
  • 報(bào)錯(cuò)情況:
    • json 不是有效的 JSON 文檔。
    • path 不是有效的路徑表達(dá)式。

示例:

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

二、JSON_UNQUOTE 取消雙引號(hào)

MySQL JSON_UNQUOTE() 函數(shù)取消雙引號(hào)引用 JSON 值,并將結(jié)果作為字符串返回。

語(yǔ)法:

JSON_UNQUOTE(json_val)

參數(shù)說(shuō)明:

  • json_val:必需的。一個(gè)字符串。

返回值:

  •  取消雙引號(hào)引用 JSON 值
  • 返回NULL情況:參數(shù)為 NULL。
  • 報(bào)錯(cuò)情況:不是有效的 JSON 字符串文本。能夠識(shí)別下表中的轉(zhuǎn)義字符:
    • \":雙引號(hào) "
    • \b退格字符
    • \f換頁(yè)符
    • \n換行符
    • \r回車符
    • \t制表符
    • \\反斜杠 \
    • \uXXXXUnicode 值 XXXX 的 UTF-8 字節(jié)

示例:

SELECT JSON_UNQUOTE('"123456"');    // 123456
SELECT JSON_UNQUOTE(CAST('"cxian"' AS JSON));    // cxian

三、JSON_KEYS 取成員的數(shù)組

MySQL JSON_KEYS() 函數(shù)返回一個(gè)包含了指定的 JSON 對(duì)象中最上層的成員 (key) 的數(shù)組。

語(yǔ)法:

JSON_KEYS(json)
JSON_KEYS(json, path)

參數(shù)說(shuō)明:

  • json:必需的。一個(gè) JSON 對(duì)象文檔。

  • path:可選的。路徑表達(dá)式。

返回值:

  •  返回一個(gè)包含了指定的 JSON 對(duì)象中最上層的成員 (key) 的數(shù)組。
  • 若指定了路徑表達(dá)式,則返回路徑表達(dá)式匹配的 JSON 對(duì)象中的最上層的成員組成的數(shù)組。
  • 返回 NULL情況:
    • 無(wú)路徑,JSON 文檔不是一個(gè) JSON 對(duì)象。
    • 有路徑,路徑匹配的 JSON 值不是 JSON 對(duì)象。
    • 任意參數(shù)為 NULL
  • 報(bào)錯(cuò)情況:
    •  json 不是有效的 JSON 文檔。
    • path 不是有效的路徑表達(dá)式。

示例:

SELECT JSON_KEYS('{"a": 1, "b": 2, "c": 3}');              // ["a", "b", "c"]
SELECT JSON_KEYS('[1, {"a": 1, "b": 2, "c": 3}]', '$[1]'); // ["a", "b", "c"]

SELECT
    JSON_KEYS('1'),         // null
    JSON_KEYS('"true"'),    // null
    JSON_KEYS('"abc"'),     // null
    JSON_KEYS('[0, 1]');    // null

四、JSON_ARRAY 將參數(shù)轉(zhuǎn)為數(shù)組

MySQL JSON_ARRAY() 函數(shù)返回一個(gè)包含了所有參數(shù)的 JSON 數(shù)組。

語(yǔ)法:

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

參數(shù)說(shuō)明:

  • value1[, value2[, ...]]:可選的。一些值,他們將被放在 JSON 數(shù)組中。

返回值:

  • 包含了所有參數(shù)的 JSON 數(shù)組。
  • 值轉(zhuǎn)換情況:
    • TRUE 被轉(zhuǎn)換為 true
    • FALSE 被轉(zhuǎn)換為 false
    • NULL 被轉(zhuǎn)換為 null
    • 日期,時(shí)間,日期時(shí)間 被轉(zhuǎn)換為 字符串 

示例:

SELECT JSON_ARRAY(1, '1', NULL, TRUE, FALSE, NOW()); // [1, "1", null, true, false, "2023-11-05 16:58:34.000000"]
SELECT JSON_ARRAY(JSON_ARRAY(1, 2), JSON_ARRAY('a', 'b')); // [[1, 2], ["a", "b"]]

五、JSON_OBJECT 參數(shù)轉(zhuǎn)為對(duì)象

MySQL JSON_OBJECT() 函數(shù)返回一個(gè)包含了由參數(shù)指定的所有鍵值對(duì)的 JSON 對(duì)象。

語(yǔ)法:

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

參數(shù)說(shuō)明:

  • key:必需的。對(duì)象中的鍵。
  • value:必需的。對(duì)象中的 key 的值。

返回值:

  •  一個(gè)包含了所有鍵值對(duì)的 JSON 對(duì)象。
  • 報(bào)錯(cuò)情況:
    • key 是 NULL。
    • 奇數(shù)個(gè)參數(shù)。

示例:

SELECT JSON_OBJECT('name', 'cxian', 'age', 22); // {"age": 22, "name": "cxian"}
SELECT JSON_OBJECT('name', 'cxian', 'age', 22, 'age', 33); // {"age": 33, "name": "cxian"}

六、JSON_DEPTH 取JSON深度

MySQL JSON_DEPTH() 函數(shù)返回一個(gè) JSON 文檔的最大深度。

語(yǔ)法:

JSON_DEPTH(json)

參數(shù)說(shuō)明:

  • json:必需的。一個(gè) JSON 文檔。

返回值:

  • 一個(gè) JSON 文檔的最大深度。規(guī)則如下:
    • 空的數(shù)組、空的對(duì)象或者純值的深度是 1。
    • 僅包含深度為 1 的元素的數(shù)組的深度是 2。
    • 所有成員的值的深度為 1 的對(duì)象的深度是 2。
    • 其他 JSON 文檔的深度都大于 2。
  • 返回 NULL情況:參數(shù)為 NULL。
  • 報(bào)錯(cuò)情況:參數(shù)不是有效的 JSON 文檔。

示例:

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

七、JSON_LENGTH 取節(jié)點(diǎn)長(zhǎng)度

MySQL JSON_LENGTH() 函數(shù)返回 JSON 文檔或者 JSON 文檔中通過(guò)路徑指定的節(jié)點(diǎn)的長(zhǎng)度。

語(yǔ)法:

JSON_LENGTH(json)
JSON_LENGTH(json, path)

參數(shù)說(shuō)明:

  • json:必需的。一個(gè) JSON 文檔。

  • path:可選的。一個(gè)路徑表達(dá)式。

返回值:

  • 有path: 返回 JSON 文檔中由路徑指定的值的長(zhǎng)度。
  • 無(wú)path:返回 JSON 文檔的長(zhǎng)度。
  • 計(jì)算 JSON 文檔的長(zhǎng)度規(guī)則:
    • 純值的長(zhǎng)度是 1。
    • 數(shù)組的長(zhǎng)度是數(shù)組元素的數(shù)量。
    • 對(duì)象的長(zhǎng)度是對(duì)象成員的數(shù)量。
    • 內(nèi)嵌的數(shù)組或?qū)ο蟛粎⑴c計(jì)算長(zhǎng)度。
  • 返回 NULL情況:
    • 不存在指定的路徑。
    • 任意一個(gè)參數(shù)為 NULL。
  • 報(bào)錯(cuò)情況:
    • json 不是有效的 JSON 文檔。
    • path 不是有效的路徑表達(dá)式。
    • path 中包含 * 或 **。

示例:

SELECT
    JSON_LENGTH('1'),        // 1
    JSON_LENGTH('true'),     // 1
    JSON_LENGTH('false'),    // 1
    JSON_LENGTH('null'),     // 1
    JSON_LENGTH('"a"');      // 1
    JSON_LENGTH('[]'),       // 0
    JSON_LENGTH('[1, 2]'),   // 2
    JSON_LENGTH('[1, {"x": 2}]');    // 2

八、JSON_CONTAINS 判斷是否包含

MySQL JSON_CONTAINS() 函數(shù)檢查一個(gè) JSON 文檔中是否包含另一個(gè) JSON 文檔。

語(yǔ)法:

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

參數(shù)說(shuō)明:

  • target_json必需的。一個(gè) JSON 文檔。

  • candidate_json:必需的。被包含的 JSON 文檔。

  • path:可選的。一個(gè)路徑表達(dá)式。

返回值:

  •  包含:返回1。
  • 不包含:返回0。
  • 返回 NULL情況:
    • JSON 文檔中不存在指定的路徑。
    • 任意一個(gè)參數(shù)為 NULL。
  • 報(bào)錯(cuò)情況:
    • json 不是有效的 JSON 文檔。
    • path 不是有效的路徑表達(dá)式。

示例:

SELECT
    JSON_CONTAINS('[1, 2, {"x": 3}]', '1'),        // 1
    JSON_CONTAINS('[1, 2, {"x": 3}]', '{"x": 3}'), // 1
    JSON_CONTAINS('[1, 2, {"x": 3}]', '3'),        // 0
    JSON_CONTAINS('[1, 2, [3, 4]]', '2'),          // 1
    JSON_CONTAINS('[1, 2, [3, 4]]', '2', '$[2]');  // 0

九、JSON_ARRAY_APPEND 追加值

MySQL JSON_ARRAY_APPEND() 函數(shù)向 JSON 文檔中的指定的數(shù)組中追加一個(gè)值并返回修改后的 JSON 文檔。

語(yǔ)法:

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

參數(shù)說(shuō)明:

  • json:必需的。被修改的 JSON 文檔。

  • path:必需的。添加新元素的路徑。一個(gè)有效的路徑表達(dá)式,它不能包含 * 或 **。

  • value:必需的。被添加到數(shù)組的新元素值。

返回值:

  • 追加后的 JSON 文檔。 
  • 返回 NULL情況:JSON 文檔或者路徑為 NULL。
  • 報(bào)錯(cuò)情況:
    • json 不是有效的 JSON 文檔。
    • path 不是有效的路徑表達(dá)式或者其中包含 * 或 **。

示例:

SELECT JSON_ARRAY_APPEND('[1, 2, 3]', '$', 4);      // [1, 2, 3, 4]
SELECT JSON_ARRAY_APPEND('[1, [2, 3]]', '$[0]', 4); // [[1, 4], [2, 3]]
SELECT JSON_ARRAY_APPEND('[1, [2, 3]]', '$[1]', 4); // [1, [2, 3, 4]]
SELECT JSON_ARRAY_APPEND('{"name": "Tim", "hobby": ["car"]}', '$.hobby', "food"); // {"name": "Tim", "hobby": ["car", "food"]}
SELECT JSON_ARRAY_APPEND('1', '$', 2); // [1, 2]

十、JSON_ARRAY_INSERT 指定位置插入值

MySQL JSON_ARRAY_INSERT() 函數(shù)向 JSON 文檔中的指定的數(shù)組中的指定位置插入一個(gè)值并返回新的 JSON 文檔。

語(yǔ)法:

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

參數(shù)說(shuō)明:

  • json:必需的。被修改的 JSON 文檔。

  • path:必需的。插入新元素的數(shù)組元素位置。一個(gè)有效的路徑表達(dá)式,它不能包含 * 或 **。比如 $[0] 和 $.a[0] 表示在數(shù)組的開頭插入新元素。

  • value:必需的。被插入到數(shù)組的新元素值。

返回值:

  • 插入后的JSON文檔。
  • 返回 NULL情況:JSON 文檔或者路徑為 NULL。
  • 報(bào)錯(cuò)情況:
    • json 不是有效的 JSON 文檔。
    • path 不是有效的路徑表達(dá)式或者其中包含 * 或 **。
    • path 指示的不是數(shù)組元素的路徑。

示例:

set @str = '[1, [2, 3], {"a": [4, 5]}]'
SELECT 
  JSON_ARRAY_INSERT(@str, '$[0]', 0), // [0, 1, [2, 3], {"a": [4, 5]}]
  JSON_ARRAY_INSERT(@str, '$[1]', 0), // [1, 0, [2, 3], {"a": [4, 5]}]
  JSON_ARRAY_INSERT(@str, '$[2]', 0), // [1, [2, 3], 0, {"a": [4, 5]}]
  JSON_ARRAY_INSERT(@str, '$[1][0]', 0), // [1, [0, 2, 3], {"a": [4, 5]}]
  JSON_ARRAY_INSERT(@str, '$[2].a[0]', 0); // [1, [2, 3], {"a": [0, 4, 5]}]

十一、JSON_CONTAINS_PATH 判斷是否存在

MySQL JSON_CONTAINS_PATH() 函數(shù)檢查一個(gè) JSON 文檔中在指定的路徑上是否有值存在。

語(yǔ)法:

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

參數(shù)說(shuō)明:

  • json:必需的。一個(gè) JSON 文檔。

  • one_or_all:必需的。可用值:'one''all'。它指示是否檢查所有的路徑。

  • path:必需的。您應(yīng)該至少指定一個(gè)路徑表達(dá)式。

返回值:

  •  有值返回 1, 否則返回 0。
  • one_or_all參數(shù)說(shuō)明:
    • 'one':任意一個(gè)路徑上有值,返回1,否則返回 0。
    • 'all':所有路徑都有值,返回1,否則返回 0。
  • 報(bào)錯(cuò)情況:
    • json 不是有效的 JSON 文檔。
    • path 不是有效的路徑表達(dá)式。

示例:

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

十二、JSON_INSERT 插入數(shù)據(jù)

MySQL JSON_INSERT() 函數(shù)向一個(gè) JSON 文檔中插入數(shù)據(jù)并返回新的 JSON 文檔。

語(yǔ)法:

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

參數(shù)說(shuō)明:

  • json:必需的。被修改的 JSON 文檔。

  • path:必需的。一個(gè)有效的路徑表達(dá)式,它不能包含 * 或 **。

  • value:必需的。被插入的數(shù)據(jù)。

返回值:

  • 插入后的JSON文檔。(若已存在, 則不插入)
  • path 為 $:返回原JSON文檔。
  • 返回 NULL情況:JSON 文檔或者路徑為 NULL。
  • 報(bào)錯(cuò)情況:
    • json 不是有效的 JSON 文檔。
    • path 不是有效的路徑表達(dá)式或者其中包含 * 或 **。 

示例:

SET @arr = '[1, [2, 3], {"a": [4, 5]}]';
SELECT JSON_INSERT(@arr, '$[0]', 0, '$[3]', 6); // [1, [2, 3], {"a": [4, 5]}, 6]
SET @obj = '{"x": 1}';
SELECT JSON_INSERT(@obj, '$.y', '2');           // {"x": 1, "y": "2"}

十三、JSON_MERGE 多個(gè)JSON合并

MySQL JSON_MERGE() 函數(shù)合并兩個(gè)或多個(gè) JSON 文檔并返回合并的結(jié)果。

語(yǔ)法:

JSON_MERGE(json1, json2, ...)

參數(shù)說(shuō)明:

  • json1:必需的。一個(gè) JSON 對(duì)象文檔。

  • json2:必需的。一個(gè) JSON 對(duì)象文檔。

返回值:

  •  合并后的新JSON文檔。
  • 返回 NULL情況:任意一個(gè)參數(shù)為 NULL。
  • 報(bào)錯(cuò)情況:參數(shù)不是有效的 JSON 文檔。

示例:

SELECT JSON_MERGE('1', 'true', '"hello"', 'null'); // [1, true, "hello", null]
SELECT JSON_MERGE('[1, 2]', '[2, 3]');             // [1, 2, 2, 3]
SELECT JSON_MERGE('{"x": 1}', '{"x": 2, "y": 3}'); // {"x": [1, 2], "y": 3}
SELECT JSON_MERGE('{"x": 1}', '[1, 2]');           // [{"x": 1}, 1, 2]

十四、JSON_MERGE_PATCH 多個(gè)JSON替換合并

MySQL JSON_MERGE_PATCH() 函數(shù)對(duì)兩個(gè)或多個(gè) JSON 文檔執(zhí)行替換合并并返回合并的結(jié)果。

替換合并:在相同鍵值時(shí),只保留后面的值。

語(yǔ)法:

JSON_MERGE_PATCH(json1, json2, ...)

參數(shù)說(shuō)明:

  • json1:必需的。一個(gè) JSON 對(duì)象文檔。

  • json2:必需的。一個(gè) JSON 對(duì)象文檔。

返回值:

  • 合并后的JSON文檔。
  • 合并規(guī)則如下:
    • 若第一個(gè)參數(shù)不是對(duì)象,則合并的結(jié)果與第二個(gè)參數(shù)合并空對(duì)象的結(jié)果相同。
    • 若第二個(gè)參數(shù)不是對(duì)象,則合并的結(jié)果為第二個(gè)參數(shù)。
    • 若兩個(gè)參數(shù)都是對(duì)象,則合并的對(duì)象具有以下成員:
      • 只存在于第一個(gè)對(duì)象中的成員。
      • 只存在于第二個(gè)對(duì)象中且值不是 null 的成員。
      • 存在于第二個(gè)對(duì)象且值不是 null ,并且在第一個(gè)對(duì)象中有對(duì)應(yīng)的相同鍵的成員。
  • 返回 NULL情況:任意一個(gè)參數(shù)為NULL。
  • 報(bào)錯(cuò)情況:任意一個(gè)參數(shù)不是有效的 JSON 文檔。

示例:

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

十五、JSON_MERGE_PRESERVE 多個(gè)JSON合并

MySQL JSON_MERGE_PRESERVE() 函數(shù)合并兩個(gè)或多個(gè) JSON 文檔并返回合并的結(jié)果。

此函數(shù)和 JSON_MERGE_PATCH() 用法相同,但是合并邏輯有所不同。

不同規(guī)則合并如下:

  • 兩個(gè)數(shù)組合并為一個(gè)數(shù)組,保留所有數(shù)組中的元素。
  • 兩個(gè)對(duì)象合并為一個(gè)對(duì)象,保留所有的鍵和值。
  • 一個(gè)純值會(huì)被包裝成一個(gè)數(shù)組并作為數(shù)組進(jìn)行合并。
  • 對(duì)象和數(shù)組合并時(shí),會(huì)將對(duì)象包裝到一個(gè)數(shù)組中并作為數(shù)組進(jìn)行合并。

示例:

SELECT
    JSON_MERGE_PRESERVE('2', 'true'), // [2, true]
    JSON_MERGE_PRESERVE('[1, 2]', '[2, 3]'), // [1, 2, 2, 3]
	JSON_MERGE_PRESERVE('{"x": 1, "z": 7}', '{"x": 2, "y": 3}'), // {"x": [1, 2], "y": 3, "z": 7}
	JSON_MERGE_PRESERVE('{"x": 1, "z": 7}', '{"x": 2, "z": null}'); // {"x": [1, 2], "z": [7, null]}

十六、JSON_OVERLAPS 判斷有無(wú)相同鍵或值

MySQL JSON_OVERLAPS() 函數(shù)檢測(cè)兩個(gè) JSON 文檔是否擁有任何一個(gè)相同鍵值對(duì)或數(shù)組元素。

語(yǔ)法:

JSON_OVERLAPS(json1, json2)

參數(shù)說(shuō)明:

  • json1:必需的。一個(gè) JSON 文檔。

  • json2:必需的。另一個(gè) JSON 文檔。

返回值:

  • 兩個(gè)JSON文檔重疊的內(nèi)容返回 1,否則返回 0。
  • 函數(shù)判斷規(guī)則如下:
    • 比較兩個(gè)數(shù)組時(shí),如果兩個(gè)數(shù)組至少有一個(gè)相同的元素返回 1,否則返回 0。
    • 比較兩個(gè)對(duì)象時(shí),如果兩個(gè)對(duì)象至少有一個(gè)相同的鍵值對(duì)返回 1,否則返回 0。
    • 比較兩個(gè)純值時(shí),如果兩個(gè)值相同返回 1,否則返回 0
    • 比較純值和數(shù)組時(shí),如果值是這個(gè)數(shù)組中的直接元素返回 1,否則返回 0。
    • 比較純值和對(duì)象的結(jié)果為 0。
    • 比較數(shù)組和對(duì)象的結(jié)果為 0
  • 返回 NULL情況:參數(shù)為 NULL。
  • 報(bào)錯(cuò)情況:任意一個(gè)參數(shù)不是有效的 JSON 文檔。

示例:

SELECT 
	JSON_OVERLAPS('[1, 2, 3]', '[3, 4, 5]'),	    // 1
	JSON_OVERLAPS('[1, 2, [3]]', '[3, 4, 5]'),	    // 0
    JSON_OVERLAPS('{"x": 1}', '{"x": 1, "y": 2}'),	// 1
    JSON_OVERLAPS('{"x": 1}', '{"y": 2}'),	        // 0
    JSON_OVERLAPS('[1, 2, 3]', '3'),	            // 1
    JSON_OVERLAPS('[1, 2, [3]]', '3');	            // 0

十七、JSON_PRETTY 格式化輸出

MySQL JSON_PRETTY() 函數(shù)格式化輸出一個(gè) JSON 文檔,以便更易于閱讀。

語(yǔ)法:

JSON_PRETTY(json)

參數(shù)說(shuō)明:

  • json:必需的。一個(gè) JSON 文檔或 JSON 類型的值。

返回值:

  •  格式化輸出JSON文檔,易于閱讀。

示例:

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

SELECT JSON_PRETTY('{"x": 1, "y": 2}');
{
  "x": 1,
  "y": 2
}

十八、JSON_REMOVE 刪除指定數(shù)據(jù)

MySQL JSON_REMOVE() 函數(shù)從一個(gè) JSON 文檔中刪除由路徑指定的數(shù)據(jù)并返回修改后的 JSON 文檔。

語(yǔ)法:

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

參數(shù)說(shuō)明:

  • json:必需的。一個(gè) JSON 文檔。

  • path:必需的。一個(gè)有效的路徑表達(dá)式,它不能包含 * 或 **。

返回值:

  •  刪除后的JSON文檔。
  • 返回 NULL情況:JSON 文檔或者路徑為 NULL。
  • 報(bào)錯(cuò)情況;
    • json 不是有效的 JSON 文檔。
    • path 不是有效的路徑表達(dá)式或者等于 $ 或者其中包含 * 或 **

示例:

SELECT 
	JSON_REMOVE('[0, 1, 2, [3, 4]]', '$[0]', '$[2]'),	// [1, 2]
	JSON_REMOVE('{"x": 1, "y": 2}', '$.x');				// {"y": 2}

十九、JSON_REPLACE 替換數(shù)據(jù)

MySQL JSON_REPLACE() 函數(shù)在一個(gè) JSON 文檔中替換已存在的數(shù)據(jù)并返回新的 JSON 文檔。

語(yǔ)法:

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

參數(shù)說(shuō)明:

  • json:必需的。被修改的 JSON 文檔。

  • path:必需的。一個(gè)有效的路徑表達(dá)式,它不能包含 * 或 **。

  • value:必需的。新的數(shù)據(jù)。

返回值:

  • 替換后的JSON文檔。
  • 回 NULL情況:JSON 文檔或者路徑為 NULL。
  • 報(bào)錯(cuò)情況:
    • json 不是有效的 JSON 文檔。
    • path 不是有效的路徑表達(dá)式或者其中包含 * 或 **。

示例:

SET @arr = '[1, [2, 3]]';
SELECT 
	JSON_REPLACE(@arr, '$[0]', 0, '$[2]', 6),    // [0, [2, 3]]
	JSON_REPLACE(@arr, '$[0]', 0, '$[1]', 6);    // [0, 6]

SET @obj = '{"x": 1}';
SELECT 
    JSON_REPLACE(@obj, '$.x', 'true', '$.y', 'true');   // {"x": "true"}
	JSON_REPLACE(@obj, '$.x', '[1, 2]'),                // {"x": "[1, 2]"}
	JSON_REPLACE(@obj, '$.x', JSON_ARRAY(1,2));         // {"x": [1, 2]}

二十、JSON_SCHEMA_VALID 驗(yàn)證JSON文檔

MySQL JSON_SCHEMA_VALID() 函數(shù)根據(jù)指定的 JSON 模式驗(yàn)證一個(gè) JSON 文檔,并返回 1 表是驗(yàn)證通過(guò)或者返回 0 表示驗(yàn)證不通過(guò)。

語(yǔ)法:

JSON_SCHEMA_VALID(schema, json_doc)

參數(shù)說(shuō)明:

  • schema:必需的。一個(gè) JSON 模式。它必須是一個(gè)有效的 JSON 對(duì)象。

  • json_doc:必需的。被驗(yàn)證的 JSON 文檔。

返回值:

  •  1 :JSON 文檔通過(guò)了驗(yàn)證。
  •  0 :JSON 文檔沒有通過(guò)驗(yàn)證。
  • 返回 NULL情況:任何一個(gè)參數(shù)為 NULL。

示例:

SET @schema = '{
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -128,
          "maximum": 127
        },
        "y": {
          "type": "number",
          "minimum": -128,
          "maximum": 127
        }
      },
      "required": ["x", "y"]
    }';
	
SELECT 
	JSON_SCHEMA_VALID(@schema, '{"x": 1}'),        // 0
	JSON_SCHEMA_VALID(@schema, '{"x": 1, "y": 2}') // 1

二十一、JSON_SCHEMA_VALIDATION_REPORT 驗(yàn)證JSON文檔

MySQL JSON_SCHEMA_VALIDATION_REPORT() 函數(shù)根據(jù)指定的 JSON 模式驗(yàn)證一個(gè) JSON 文檔,并返回一個(gè)驗(yàn)證報(bào)告。

語(yǔ)法:

JSON_SCHEMA_VALIDATION_REPORT(schema, json_doc)

參數(shù)說(shuō)明:

  • schema:必需的。一個(gè) JSON 模式。它必須是一個(gè)有效的 JSON 對(duì)象。

  • json_doc:必需的。被驗(yàn)證的 JSON 文檔。

返回值:

  •  驗(yàn)證結(jié)果的報(bào)告。
  • {"valid": true}:驗(yàn)證通過(guò)。
  • {"valid": false, reason:'...'}:驗(yàn)證不通過(guò),reason為不通過(guò)原因。

示例:

SET @schema = '{
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -90,
          "maximum": 90
        },
        "y": {
          "type": "number",
          "minimum": -180,
          "maximum": 180
        }
      },
      "required": ["x", "y"]
    }';
	
SELECT 
	JSON_SCHEMA_VALIDATION_REPORT(@schema, '{"x": 1}'), // {"valid": false, "reason": "The JSON document location '#' failed requirement 'required' at JSON Schema location '#'", "schema-location": "#", "document-location": "#", "schema-failed-keyword": "required"}
	JSON_SCHEMA_VALIDATION_REPORT(@schema, '{"x": 1, "y": 2}') // {"valid": true}

二十二、JSON_SEARCH 查找

MySQL JSON_SEARCH() 函數(shù)返回一個(gè)給定字符串在一個(gè) JSON 文檔中的路徑。

語(yǔ)法:

JSON_SEARCH(json, one_or_all, search_str)
JSON_SEARCH(json, one_or_all, search_str, escape_char)
JSON_SEARCH(json, one_or_all, search_str, escape_char, path)

參數(shù)說(shuō)明:

  • json:必需的。一個(gè) JSON 文檔。

  • one_or_all:必需的??捎弥担?code>'one', 'all'。 規(guī)則如下:

    • 'one':返回第一個(gè)匹配的路徑。
    • 'all':返回所有匹配的路徑。所有的路徑會(huì)包裝在一個(gè)數(shù)組內(nèi)返回。
  • search_str:必需的。被搜索的字符串。 您可以在 search_str 參數(shù)中使用 % 和 _ 通配符,就像 LIKE 一樣:

    • % 匹配任意數(shù)量的任意字符。
    • _ 匹配一個(gè)任意字符。
  • escape_char:可選的。 如果 search_str 中包含 % 和 _,需要在他們之前添加轉(zhuǎn)移字符。默認(rèn)是 \。

  • path:可選的。只能在此路徑下進(jìn)行搜索。

返回值:

  • 一個(gè)路徑字符串或者由多個(gè)路徑組成的數(shù)組。
  • 返回 NULL情況:
    • 未搜索到指定的字符串。
    • JSON 文檔中不存在指定的 path。
    • 任意一個(gè)參數(shù)為 NULL。
  • 報(bào)錯(cuò)情況:
    • json 不是有效的 JSON 文檔。
    • path 不是有效的路徑表達(dá)式。

示例:

SET @json = '{
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "minimum": -90,
          "maximum": 90
        },
        "y": {
          "type": "number",
          "minimum": -180,
          "maximum": 180
        }
      },
      "required": ["x", "y"]
    }';
	
SELECT 
	JSON_SEARCH(@json, 'one','number'), // "$.properties.x.type"
	JSON_SEARCH(@json, 'all','number')  // ["$.properties.x.type", "$.properties.y.type"]

二十三、JSON_SET 插入或更新數(shù)據(jù)

MySQL JSON_SET() 函數(shù)在一個(gè) JSON 文檔中插入或更新數(shù)據(jù)并返回新的 JSON 文檔。它相當(dāng)于是 JSON_INSERT() 和 JSON_REPLACE() 的組合。

語(yǔ)法:

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

參數(shù)說(shuō)明:

  • json:必需的。被修改的 JSON 文檔。

  • path:必需的。一個(gè)有效的路徑表達(dá)式,它不能包含 * 或 **。

  • value:必需的。要設(shè)置的數(shù)據(jù)。

返回值:

  •  插入或更新數(shù)據(jù)并返回新的 JSON 文檔。規(guī)則如下:
    • 存在路徑:更新。
    • 不存在路徑:添加。
  • value 為字符串:直接插入。
  • 返回 NULL情況:JSON 文檔或者路徑為 NULL。
  • 報(bào)錯(cuò)情況:
    • json 不是有效的 JSON 文檔。
    • path 不是有效的路徑表達(dá)式或者其中包含 * 或 **。

示例:

SET @obj = '{"x": 1}';
SELECT 
	JSON_SET(@obj, '$.x', '10', '$.y', '[1, 2]'),    // {"x": "10", "y": "[1, 2]"}
	JSON_SET(@obj, '$.x', '10', '$.y', '{"z": 2}'),  // {"x": "10", "y": "{\"z\": 2}"}
	JSON_SET(@obj, '$.x', '10', '$.y', CAST('[1, 2]' AS JSON)); // {"x": "10", "y": [1, 2]}

二十四、JSON_STORAGE_FREE 釋放空間

MySQL JSON_STORAGE_FREE() 函數(shù)返回一個(gè) JSON 列在被 JSON_SET()、JSON_REPLACE() 或 JSON_REMOVE() 更新后所釋放的空間。

語(yǔ)法:

JSON_STORAGE_FREE(json)

參數(shù)說(shuō)明:

  • json:必需的。一個(gè) JSON 文檔。它可以是一個(gè) JSON 字符串,或者一個(gè) JSON 列。

返回值:

  • 一個(gè) JSON 列在被 JSON_SET()、JSON_REPLACE() 或 JSON_REMOVE() 更新后所釋放的空間。它可以接受一個(gè) JSON 字符串,或者一個(gè) JSON 列作為參數(shù)。
  • 返回 0 情況:
    • 參數(shù)是一個(gè) JSON 字符串。
    • 列沒有被更新過(guò),或不是使用JSON_SET()、JSON_REPLACE() 或 JSON_REMOVE() 部分更新。
    • 內(nèi)容在更新后變的更大了
  • 返回更新后釋放的空間:列(數(shù)據(jù)庫(kù)表的列)被 JSON_SET()、JSON_REPLACE() 或 JSON_REMOVE() 部分更新。
  • 返回 NULL情況:參數(shù)為 NULL。
  • 報(bào)錯(cuò)情況:json 不是有效的 JSON 文檔。

示例:

DROP TABLE IF EXISTS test;
CREATE TABLE test (
    json_col JSON NOT NULL
);

INSERT INTO test
VALUES ('{"x": 1, "y": "99"}');

SELECT
    json_col,                    // {"x": 1, "y": "99"}
    JSON_STORAGE_SIZE(json_col), // 24
    JSON_STORAGE_FREE(json_col)  // 0
FROM
    test;
// {"x": 1, "y": "99"} | 24  |  0


UPDATE test
SET json_col = JSON_REMOVE(json_col, '$.y');
SELECT
    json_col,                    // {"x": 1}
    JSON_STORAGE_SIZE(json_col), // 24
    JSON_STORAGE_FREE(json_col)  // 11
FROM
    test;

二十五、JSON_STORAGE_SIZE 占用字節(jié)數(shù)

MySQL JSON_STORAGE_SIZE() 函數(shù)返回存儲(chǔ)一個(gè) JSON 文檔的二進(jìn)制表示所占用的字節(jié)數(shù)。

語(yǔ)法:

JSON_STORAGE_SIZE(json)

參數(shù)說(shuō)明:

  • json:必需的。一個(gè) JSON 文檔。它可以是一個(gè) JSON 字符串,或者一個(gè) JSON 列。

返回值:

  • JSON 文檔的二進(jìn)制表示所占用的字節(jié)數(shù)。
  • 返回 NULL:參數(shù)為 NULL。
  • 報(bào)錯(cuò)情況:json 不是有效的 JSON 文檔。

示例:

SELECT
    JSON_STORAGE_SIZE('100'),  // 3
    JSON_STORAGE_SIZE('"a"'),  // 3
	JSON_STORAGE_SIZE('true'), // 2
	JSON_STORAGE_SIZE('null'); // 2

二十六、JSON_TABLE 提取數(shù)據(jù)

MySQL JSON_TABLE() 函數(shù)從一個(gè)指定的 JSON 文檔中提取數(shù)據(jù)并返回一個(gè)具有指定列的關(guān)系表。

語(yǔ)法:

JSON_TABLE(
    json,
    path COLUMNS (column[, column[, ...]])
)

column:
    name FOR ORDINALITY
    |  name type PATH string_path [on_empty] [on_error]
    |  name type EXISTS PATH string_path
    |  NESTED [PATH] path COLUMNS (column[, column[, ...]])

on_empty:
    {NULL | DEFAULT json_string | ERROR} ON EMPTY

on_error:
    {NULL | DEFAULT json_string | ERROR} ON ERROR

參數(shù)說(shuō)明:

  • json:必需的。一個(gè) JSON 文檔。

  • path:必需的。一個(gè)路徑表達(dá)式。

  • column:必需的。定義一個(gè)列??梢允褂萌缦?4 中方式定義列:

    • name FOR ORDINALITY: 生成一個(gè)從 1 開始的計(jì)數(shù)器列,名字為 name。
    • name type PATH string_path [on_empty] [on_error]: 將由路徑表達(dá)式 string_path 指定的值放在名字為 name 的列中。
    • name type EXISTS PATH string_path:根據(jù) string_path 指定的位置是否有值將 1 或 0 放在名字為 name 的列中。
    • NESTED [PATH] path COLUMNS (column[, column[, ...]]): 將內(nèi)嵌的對(duì)象或者數(shù)組中的數(shù)據(jù)拉平放在一行中。
  • on_empty:可選的。如果指定了,它決定了指定路徑下沒有數(shù)據(jù)時(shí)的返回值:
    • NULL ON EMPTY: 如果指定路徑下沒有數(shù)據(jù),JSON_TABLE() 函數(shù)將使用 NULL,這是默認(rèn)的行為。
    • DEFAULT value ON EMPTY: 如果指定路徑下沒有數(shù)據(jù),JSON_TABLE() 函數(shù)將使用 value。
    • ERROR ON EMPTY: 如果指定路徑下沒有數(shù)據(jù),JSON_TABLE() 函數(shù)將拋出一個(gè)錯(cuò)誤。
  • on_error:可選的。如果指定了,它決定了處理錯(cuò)誤的邏輯:
    • NULL ON ERROR: 如果有錯(cuò)誤,JSON_TABLE() 函數(shù)將使用 NULL,這是默認(rèn)的行為。
    • DEFAULT value ON ERROR: 如果有錯(cuò)誤,JSON_TABLE() 函數(shù)將使用 value。
    • ERROR ON ERROR: 如果有錯(cuò)誤,JSON_TABLE() 函數(shù)將拋出一個(gè)錯(cuò)誤。

返回值:

  •  具有指定列的關(guān)系表。

示例:

SELECT
    *
FROM
    JSON_TABLE(
        '[{"x":10,"y":11}, {"y": 21}, {"x": 30}]',
        '$[*]'
        COLUMNS (
            id FOR ORDINALITY,
            x INT PATH '$.x' DEFAULT '100' ON EMPTY,
            y INT PATH '$.y'
        )
    ) AS t;


   id      x       y
+------+-------+--------+
|     1|     10|      11|
+-----------------------+
|     2|    100|      21|
+------+-------+--------+
|     2|     30|    NULL|
+------+-------+--------+

示例說(shuō)明:

  • 路徑表達(dá)式$[*]: 數(shù)組中的每個(gè)元素,也就是數(shù)組中的那兩個(gè)對(duì)象。
    • $[0]:只提取 JSON 數(shù)組中的第 1 元素
    • $[1]:只提取 JSON 數(shù)組中的第 2 元素
    • 以此類推
  • COLUMNS 子句定義了關(guān)系表中的 3 個(gè)列:
    • id FOR ORDINALITY: 列名為 id,列的內(nèi)容為從 1 開始的自增序列。
    • x INT PATH '$.x' DEFAULT '100' ON EMPTY: 當(dāng)對(duì)象中不存在成員 x 或者 x 的值為空時(shí)要使用默認(rèn)值 100。
    • y INT PATH '$.y: 列名為 y,列的內(nèi)容是對(duì)應(yīng)了對(duì)象中的成員 y。
  • 其中 $.x 和 $.y 中的 $ 代表了當(dāng)前的上下文對(duì)象,也就是數(shù)組中的每個(gè)對(duì)象。

拉平內(nèi)嵌的數(shù)組示例:

SELECT
    *
FROM
    JSON_TABLE(
        '[{"x":10,"y":[11, 12]}, {"x":20,"y":[21, 22]}]',
        '$[*]'
        COLUMNS (
            x INT PATH '$.x',
            NESTED PATH '$.y[*]' COLUMNS (y INT PATH '$')
        )
    ) AS t;

    x     y    
+------+-------+
|   10 |   11  |
|   10 |   12  |
|   20 |   21  |
|   20 |   22  |
+------+-------+

示例說(shuō)明:

  • NESTED PATH '$.y[*]' COLUMNS (y INT PATH '$'):展開 y 對(duì)應(yīng)的數(shù)組,并將 y 數(shù)組中的每個(gè)元素放入名稱為 y 的列中。

拉平內(nèi)嵌的對(duì)象:

SELECT
    *
FROM
    JSON_TABLE(
        '[{"x":10,"y":{"a":11,"b":12}},{"x":20,"y":{"a":21,"b":22}}]',
        '$[*]'
        COLUMNS (
            x INT PATH '$.x',
            NESTED PATH '$.y' COLUMNS (
                ya INT PATH '$.a',
                yb INT PATH '$.b'
            )
        )
    ) AS t;

    x       ya      yb   
+------+-------+-------+
|   10 |    11 |    12 |
|   20 |    21 |    22 |
+------+-------+-------+

示例說(shuō)明:

  • NESTED PATH '$.y' 子句將對(duì)象 y 中成員提取到 2 列:
    • 成員 a 被提取到列 ya。
    • 成員 b 被提取到列 yb。

二十七、JSON_TYPE 取類型

MySQL JSON_TYPE() 函數(shù)返回一個(gè)給定的 JSON 值的類型。

語(yǔ)法:

JSON_TYPE(json_value)

參數(shù)說(shuō)明:

  • json_value:必需的。一個(gè) JSON 值。

返回值:(一個(gè) utf8mb4 字符串)

  • OBJECT: JSON 對(duì)象。
  • ARRAY: JSON 數(shù)組
  • BOOLEAN: JSON 布爾值
  • NULL: JSON null 值
  • INTEGER: MySQL TINYINTSMALLINTMEDIUMINT,INT 和 BIGINT 類型的值
  • DOUBLE: MySQL DOUBLE和 FLOAT 類型的值
  • DECIMAL: MySQL DECIMAL 和 NUMERIC 類型的值
  • DATETIME: MySQL DATETIME 和 TIMESTAMP 類型的值
  • DATE: MySQL DATE 類型的值
  • TIME: MySQL TIME 類型的值
  • STRING: MySQL CHARVARCHARTEXTENUM 和 SET
  • BLOB: MySQL BINARYVARBINARYBLOB 和 BIT
  • OPAQUE: 以上之外的類型

示例:

SELECT 
    JSON_TYPE('true'),	// BOOLEAN
    JSON_TYPE('null'),	// NULL
    JSON_TYPE('"abc"');	// STRING

二十八、JSON_VALID 驗(yàn)證有校性

MySQL JSON_VALID() 函數(shù)返回 0 和 1 來(lái)指示給定的參數(shù)是否是一個(gè)有效的 JSON 文檔。

語(yǔ)法:

JSON_VALID(str)

參數(shù)說(shuō)明:

  • str:必需的。需要被驗(yàn)證的內(nèi)容。

返回值:

  • 1:是JSON文檔。
  • 0:不是JSON文檔。
  • 返回 NULL情況:參數(shù)為 NULL。

示例:

SELECT 
    JSON_VALID(1), 			  // 0
	JSON_VALID('1'),          // 1   
    JSON_VALID(true),         // 0
	JSON_VALID('true'),       // 1
    JSON_VALID('abc'),        // 0
	JSON_VALID('"abc"'),      // 1
	JSON_VALID('{"a": 1}'),   // 1
	JSON_VALID('{a: 1}');     // 0

二十九、JSON_VALUE 提取指定路徑的值

MySQL JSON_VALUE() 函數(shù)從一個(gè)指定的 JSON 文檔中提取指定路徑的值并返回。

語(yǔ)法:

JSON_VALUE(json, path [RETURNING type] [{NULL | ERROR | DEFAULT value} ON EMPTY] [{NULL | ERROR | DEFAULT value} ON ERROR])

參數(shù)說(shuō)明:

  • json:必需的。一個(gè) JSON 文檔。

  • path:必需的。一個(gè)路徑表達(dá)式。

  • RETURNING type

    可選的。他決定了返回值的類型。您可以使用下面值中的一個(gè):

    • FLOAT
    • DOUBLE
    • DECIMAL
    • SIGNED
    • UNSIGNED
    • DATE
    • TIME
    • DATETIME
    • YEAR (MySQL 8.0.22 and later)
    • CHAR
    • JSON
  • {NULL | ERROR | DEFAULT value} ON EMPTY:可選的。如果指定了,它決定了指定路徑下沒有數(shù)據(jù)的返回值:
    • NULL ON EMPTY: 如果指定路徑下沒有數(shù)據(jù),JSON_VALUE() 函數(shù)將返回 NULL,這是默認(rèn)的行為。
    • DEFAULT value ON EMPTY: 如果指定路徑下沒有數(shù)據(jù),JSON_VALUE() 函數(shù)將返回 value
    • ERROR ON EMPTY: 如果指定路徑下沒有數(shù)據(jù),JSON_VALUE() 函數(shù)將拋出一個(gè)錯(cuò)誤。
  • {NULL | ERROR | DEFAULT value} ON ERROR:可選的。如果指定了,它決定了處理錯(cuò)誤的邏輯:
    • NULL ON ERROR: 如果有錯(cuò)誤,JSON_VALUE() 函數(shù)將返回 NULL,這是默認(rèn)的行為。
    • DEFAULT value ON ERROR: 如果有錯(cuò)誤,JSON_VALUE() 函數(shù)將返回 value。
    • ERROR ON ERROR: 如果有錯(cuò)誤,JSON_VALUE() 函數(shù)將拋出一個(gè)錯(cuò)誤。

返回值:

  • 路徑上的數(shù)據(jù)。
  • 報(bào)錯(cuò)情況: 
    • json 不是有效的 JSON 文檔。
    • path 不是有效的路徑表達(dá)式。

示例:

SET @json = '[
  {
    "name": "cxian",
    "age": 22,
  },
  {
    "name": "jie",
    "age": 23  }
]';

SELECT 
    JSON_VALUE(@json, '$[0].age'), // 22
    JSON_VALUE(@json, '$[1].age'); // 23
    JSON_VALUE(@json, '$[1].age' RETURNING DECIMAL(9,2)), // 23.00
    JSON_VALUE(@json, '$[0].note' DEFAULT 'Nothing' ON EMPTY) // Nothing

三十、MEMBER OF 是否為數(shù)組的元素

MySQL MEMBER OF() 函數(shù)檢查一個(gè)指定的值是否是一個(gè) JSON 數(shù)組中的元素。

語(yǔ)法:

value MEMBER OF(value, json_array)

參數(shù)說(shuō)明:

  • value:必需的。一個(gè)值。它可以是任意類型。

  • json_array:必需的。一個(gè) JSON 數(shù)組。

返回值:

  • 1:json_array中包含value,或 json_array為值且與value相等。
  • 0:數(shù)組中不包含value。
  • 報(bào)錯(cuò)情況:json_array 不是有效的 JSON 文檔。

示例:

SELECT
    1 MEMBER OF('[1, 2, "a"]'),               // 1
    'a' MEMBER OF('"a"'),                     // 1
    CAST('true' AS JSON) MEMBER OF('true')    // 1

三十一、JSON_QUOTE 包裝成JSON串

MySQL JSON_QUOTE() 函數(shù)使用雙引號(hào)包裝一個(gè)值,使其成為一個(gè) JSON 字符串值。

語(yǔ)法:

JSON_QUOTE(str)

參數(shù)說(shuō)明:

  • str:必需的。一個(gè)字符串。

返回值:

  •  一個(gè)使用雙引號(hào)包圍的 JSON 字符串值。
  • 返回 NULL情況:參數(shù)為 NULL。
  • 特殊字符將使用反斜杠轉(zhuǎn)義:
    • \":雙引號(hào) "
    • \b:退格字符
    • \f:換頁(yè)符
    • \n:換行符
    • \r:回車符
    • \t:制表符
    • \\:反斜杠 \
    • \uXXXX:Unicode 值 XXXX 的 UTF-8 字節(jié)

示例:

SELECT
    JSON_QUOTE('1'),       // "1"
    JSON_QUOTE('NULL'),    // "NULL"
    JSON_QUOTE('"NULL"')   // "\"NULL\""

總結(jié) 

到此這篇關(guān)于輕松上手MYSQL之JSON函數(shù)實(shí)現(xiàn)高效數(shù)據(jù)查詢與操作的文章就介紹到這了,更多相關(guān)MYSQL JSON函數(shù)數(shù)據(jù)查詢與操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql數(shù)據(jù)NULL避坑指南分享

    mysql數(shù)據(jù)NULL避坑指南分享

    這篇文章主要介紹了mysql數(shù)據(jù)NULL避坑指南,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • 深入理解mysql的自連接和join關(guān)聯(lián)

    深入理解mysql的自連接和join關(guān)聯(lián)

    這篇文章主要給大家介紹了關(guān)于mysql的自連接和join關(guān)聯(lián)的相關(guān)資料,文中介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-04-04
  • 淺談MySQL與redis緩存的同步方案

    淺談MySQL與redis緩存的同步方案

    這篇文章主要介紹了淺談MySQL與redis緩存的同步方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 詳解mysql DML語(yǔ)句的使用

    詳解mysql DML語(yǔ)句的使用

    這篇文章主要介紹了詳解mysql DML語(yǔ)句的使用,幫助大家更好的理解和學(xué)習(xí)mysql,感興趣的朋友可以了解下
    2020-08-08
  • 最新評(píng)論