黄a在线观看-黄a在线-黄a大片-黄色片在线看-黄色毛片免费-黄色大片网站

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

MySQL實(shí)現(xiàn)查詢處理JSON數(shù)據(jù)的示例詳解

瀏覽:7日期:2023-07-28 19:59:55
目錄前言JSON_CONTAINSJSON_CONTAINS_PATHJSON_EXTRACTcolumn->pathcolumn->>pathJSON_KEYSJSON_OVERLAPSJSON_SEARCHJSON_VALUEMEMBEROF總結(jié)前言

最近在做項(xiàng)目時(shí),表 A 有多個(gè)字段,其中一個(gè)字段 info 把當(dāng)前項(xiàng)目用不到的冗余的數(shù)據(jù)按照 JSON 格式都存了進(jìn)來(lái)。隨著項(xiàng)目的推進(jìn),有些冗余字段需要單獨(dú)成一列。新增一列之后,需要把 info中對(duì)應(yīng)的數(shù)據(jù)刷入新增列,這就需要從 MySQL 中讀取 JSON 數(shù)據(jù)。

當(dāng)時(shí)想到的方法,就是寫個(gè)程序,批量查詢數(shù)據(jù),把 info 字段查詢出來(lái)后反序列化,取出其中的key-value,然后再存入數(shù)據(jù)庫(kù)。后面查詢資料,發(fā)現(xiàn) MySQL 已經(jīng)提供了從 JSON 數(shù)據(jù)中查找和比較的函數(shù),極大地方便了數(shù)據(jù)處理!

這是在沒(méi)有寫這篇文章前,查詢資料寫出來(lái)的刷數(shù)據(jù)SQL,其實(shí)還有優(yōu)化的空間,等文章最后我們一起看下吧!

select?id,???????replace(replace(json_extract(`info`,?'$.budget_mode'),?''',?''),?'null',?''),???????replace(replace(json_extract(`info`,?'$.budget'),?''',?''),?'null',?0),???????replace(replace(json_extract(`info`,?'$.bid'),?''',?''),?'null',?0),from?tablewhere?code?=?'xxx';

其次,為了方便后面的學(xué)習(xí)和測(cè)試,我們新建一張表,建表語(yǔ)句如下:

create?table?`userinfo`(????`id`???bigint?unsigned?NOT?NULL?AUTO_INCREMENT?COMMENT?'主鍵'?PRIMARY?KEY,????`info`?longtext????????NOT?NULL?COMMENT?'用戶信息');

接下來(lái)我們就看下MySQL提供的 JSON 查詢和比較函數(shù),比較常用的應(yīng)該就是 JSON_EXTRACT 、column->path、column->>path 和 JSON_VALUE 四個(gè)函數(shù),可以按需學(xué)習(xí)哦!

JSON_CONTAINS

該函數(shù)用于判斷一個(gè) JSON 文檔是否包含另一個(gè) JSON 文檔。如果提供了路徑,用于判斷 JSON 文檔相應(yīng)路徑下的數(shù)據(jù)是否包含另一個(gè)JSON 文檔。

語(yǔ)法

JSON_CONTAINS(target,candidate[,path])

target: 必填。目標(biāo) JSON 文檔candidate: 必填。被包含的 JSON 文檔path: 可選。路徑

返回值

如果 target 或者 target 在 path 路徑下的數(shù)據(jù)包含 candidate,返回 1;否則返回 0如果任意一個(gè)必填參數(shù)為 NULL,或者路徑 path 在 target 中不存在,返回 NULL如果 target 或者 candidate 不是一個(gè)有效的JSON 文檔,查詢報(bào)錯(cuò)如果提供的 path 不是一個(gè)有效的路徑表達(dá)式,或者 path 包含通配符 '*' 或者 '**' ,查詢報(bào)錯(cuò)

規(guī)則

對(duì)于兩個(gè)簡(jiǎn)單類型的變量,如果兩者類型相同、該類型可比較且值相等,則 target 包含 candidate對(duì)于兩個(gè)數(shù)組類型的變量,如果 candidate 數(shù)組中的每個(gè)元素,都存在于 target 中的某些元素中,則 target 包含 candidate對(duì)于一個(gè)非數(shù)組類型 candidate 和數(shù)組類型 target,如果 candidate 存在于 target 的某些元素中,則 target 包含 candidate對(duì)于兩個(gè)對(duì)象,如果 candidate 的每個(gè) key 都在 target 中存在,且對(duì)應(yīng)的 value 值也被包含,則 target 包含 candidate

測(cè)試

insert?into?userinfo?(id,?info)?values?(1,'{'a':?1,?'b':?2,?'c':?{'d':?4},'d':[1,2,3]}');select??JSON_CONTAINS(info,'1')?from?userinfo?where?id=1;?#?0,?target?不包含?JSON?'1'select??JSON_CONTAINS(info,'1','$.a')?from?userinfo?where?id=1;?#?1,?兩個(gè)簡(jiǎn)單類型,?1?包含?1select??JSON_CONTAINS(info,'1','$.d')?from?userinfo?where?id=1;?#?1,?非數(shù)組和數(shù)組類型比較,?[1,2,3]?包含?1select??JSON_CONTAINS(info,'[1,2]','$.d')?from?userinfo?where?id=1;?#?1,?兩個(gè)數(shù)組類型比較,?[1,2,3]?包含?數(shù)組類型?[1,2]select??JSON_CONTAINS(info,'[1,2,4]','$.d')?from?userinfo?where?id=1;?#?0,?兩個(gè)數(shù)組類型比較,?[1,2,3]?不包含?數(shù)組類型?[1,2,4]select??JSON_CONTAINS(info,'{'a':1}')?from?userinfo?where?id=1;?#?1,?兩個(gè)對(duì)象比較,?target?中存在?key?'a',且?value?包含select??JSON_CONTAINS(info,'{'a':2}')?from?userinfo?where?id=1;?#?0,?兩個(gè)對(duì)象比較,?target?存在?key?'a',但?value?不包含select??JSON_CONTAINS(info,'{'d':2}')?from?userinfo?where?id=1;?#?1,?兩個(gè)對(duì)象比較,?target?存在?key?'d',且?value?包含select??JSON_CONTAINS(info,'{'a':1,'d':2}')?from?userinfo?where?id=1;?#?1,?兩個(gè)對(duì)象比較,?target?存在?key?'a'?和?'d'?,且?value?均包含select??JSON_CONTAINS(info,'{'a':1,'d':[2,3]}')?from?userinfo?where?id=1;?#?1,?兩個(gè)對(duì)象比較,?target?存在?key?'a'?和?'d'?,且?value?均包含JSON_CONTAINS_PATH

該函數(shù)用于判斷一個(gè) JSON 文檔是否包含一個(gè)或者多個(gè)路徑 path

語(yǔ)法

JSON_CONTAINS_PATH(json_doc, one_or_all, path[, path...])]

json_doc: 必填。一個(gè) JSON 文檔one_or_all: 必填。值為 'one' 或者 'all',指定至少一個(gè)還是所有 path 存在于 json_docpath: 必填。至少填寫一個(gè)路徑

返回值

one_or_all = 'one' 時(shí),如果存在一個(gè) path 存在于 json_doc,返回 1 ; 否則返回 0one_or_all = 'all' 時(shí),所有 path 存在于 json_doc 返回 1 ; 否則返回 0如果有參數(shù)為 NULL,則返回 NULL如果 json_doc 不是有效的JSON數(shù)據(jù),或者 path 不是合法的表達(dá)式,或者 one_or_all 參數(shù) 取值不是 'one' 或者 'all',返回 error

測(cè)試

insert?into?userinfo?(id,?info)?values?(2,'{'a':?1,?'b':?2,?'c':?{'d':?4}}');select?JSON_CONTAINS_PATH(info,'one','$.a')?from?userinfo?where?id=2;?#?1,?a?存在于?路徑中select?JSON_CONTAINS_PATH(info,'one','$.a','$.e')?from?userinfo?where?id=2?;?#?1,?至少一個(gè)存在即可,且路徑?a?存在select?JSON_CONTAINS_PATH(info,'all','$.a','$.e')?from?userinfo?where?id=2;?#?0,?必須所有路徑都存在,但路徑?e?不存在中select?JSON_CONTAINS_PATH(info,'all','$.c.d')?from?userinfo?where?id=2;?#?1,?路徑?c.d?存在JSON_EXTRACT

該函數(shù)用于從 JSON 字段中查詢路徑 path 對(duì)應(yīng)的 value 值

語(yǔ)法

JSON_EXTRACT(json_doc, path[,path...])

json_doc: 必填。一個(gè) JSON 文檔path: 必填。至少填寫一個(gè)路徑

返回值

如果只匹配到一個(gè)path,則返回對(duì)應(yīng)的 value如果匹配到多個(gè) path,則將所有的 value 組合成一個(gè)數(shù)組返回,value 在數(shù)組的順序和 提供的 path 順序保持一致如果參數(shù)為 NULL,或者未在 json_doc 中匹配到對(duì)應(yīng)的 path,則返回NULL如果 json_doc 不是合法的 JSON 文檔,或者 path 不是合法的路徑表達(dá)式,則返回errorinsert?into?userinfo?(id,?info)?values?(3,'{'a':?1,?'b':?2,?'c':?{'d':?4},'d':[1,2,3],'e':{'name':'tom','age':12}}');select?json_extract(info,'$.a')?from?userinfo?where?id=3;?#?1select?json_extract(info,'$.c.d')?from?userinfo?where?id=3;?#?4select?json_extract(info,'$.d')?from?userinfo?where?id=3;?#?[1,2,3]select?json_extract(info,'$.d[0]')?from?userinfo?where?id=3;?#?1select?json_extract(info,'$.d[3]')?from?userinfo?where?id=3;?#?NULLselect?json_extract(info,'$.f')?from?userinfo?where?id=3;?#?NULLselect?json_extract(info,'$.a','$.b','$.c','$.d','$.e.name','$.e.age','$.f')?from?userinfo?where?id=3;?#?[1,?2,?{'d':?4},?[1,?2,?3],?'tom',?12]

如果只查詢一個(gè) path,可以使用接下來(lái)介紹的 -> 操作符

column->path

JSON_EXTRACT 只有兩個(gè)參數(shù)時(shí)的縮寫。

如下兩個(gè)查詢是等價(jià)的:

select?info,info->'$.a'?as?info_a?from?userinfo?where?info->'$.a'?>0?;select?info,JSON_EXTRACT(info,'$.a')?as?info_a??from?userinfo?where?JSON_EXTRACT(info,'$.a')>0;+-----------------------------------------------------------------------+------+|info???????????????????????????????????????????????????????????????????|info_a|+-----------------------------------------------------------------------+------+|{'a':?1,?'b':?2,?'c':?{'d':?4},'d':[1,2,3]}????????????????????????????|1?????||{'a':?1,?'b':?2,?'c':?{'d':?4}}????????????????????????????????????????|1?????||{'a':?1,?'b':?2,?'c':?{'d':?4},'d':[1,2,3],'e':{'name':'tom','age':12}}|1?????|+-----------------------------------------------------------------------+------+

和列操作一樣,這個(gè)符號(hào)可以用于 where條件、order by 條件等

select?info,info->'$.a'?as?a,?info->'$.c.d'?as?info_c_d?from?userinfo?where?info->'$.d'?is?not?null?;+-----------------------------------------------------------------------+-+--------+|info???????????????????????????????????????????????????????????????????|a|info_c_d|+-----------------------------------------------------------------------+-+--------+|{'a':?1,?'b':?2,?'c':?{'d':?4},'d':[1,2,3]}????????????????????????????|1|4???????||{'a':?1,?'b':?2,?'c':?{'d':?4},'d':[1,2,3],'e':{'name':'tom','age':12}}|1|4???????|+-----------------------------------------------------------------------+-+--------+select?info,info->'$.a'?as?a,info->'$.c.d'?as?info_c_d?from?userinfo?where?info->'$.d[0]'>0?order?by?'$.a';+-----------------------------------------------------------------------+-+--------+|info???????????????????????????????????????????????????????????????????|a|info_c_d|+-----------------------------------------------------------------------+-+--------+|{'a':?1,?'b':?2,?'c':?{'d':?4},'d':[1,2,3]}????????????????????????????|1|4???????||{'a':?1,?'b':?2,?'c':?{'d':?4},'d':[1,2,3],'e':{'name':'tom','age':12}}|1|4???????|+-----------------------------------------------------------------------+-+--------+column->>path

'->>' 符號(hào)相對(duì)于 '->',增加了去除引號(hào)的功能。如果一個(gè) JSON 文檔中,key 對(duì)應(yīng)的 value 是字符串類型,那么如下三個(gè)表達(dá)式返回相同的結(jié)果:

JSON_UNQUOTE(JSON_EXTRACT(column,path))JSON_UNQUOTE(column->path)column->>pathselect?info->'$.e.name'?as?name?from?userinfo?where?id=3;?#?'tom'select?json_unquote(json_extract(info,'$.e.name'))?as?name?from?userinfo?where?id?=3;?#?tomselect?json_unquote(info->'$.e.name')?as?name?from?userinfo?where?id=3;?#?tomselect?info->>'$.e.name'?as?name?from?userinfo?where?id=3;?#?tomJSON_KEYS

該函數(shù)用于返回 JSON 文檔或者指定 path 下最頂層的所有 key

語(yǔ)法

JSON_KEYS(json_doc,[path])

json_doc: 必填。一個(gè) JSON 文檔path: 選填。路徑

返回值

返回 json_doc 或者指定 path 下最頂層的 key 數(shù)組如果任意參數(shù)為 NULL,或者 json_doc 不是一個(gè)對(duì)象(可能是個(gè)數(shù)組),或者根據(jù) path 沒(méi)有定位到數(shù)據(jù),則返回NULL如果 json_doc不是 JSON 對(duì)象,或者指定的路徑不合法,返回error

測(cè)試

select?info,json_keys(info)?from?userinfo?where?id=1;+-------------------------------------------+--------------------+|info???????????????????????????????????????|json_keys(info)?????|+-------------------------------------------+--------------------+|{'a':?1,?'b':?2,?'c':?{'d':?4},'d':[1,2,3]}|['a',?'b',?'c',?'d']|+-------------------------------------------+--------------------+select?info,json_keys(info->'$.c')?from?userinfo?where?id=1;+-------------------------------------------+----------------------+|info???????????????????????????????????????|json_keys(info->'$.c')|+-------------------------------------------+----------------------+|{'a':?1,?'b':?2,?'c':?{'d':?4},'d':[1,2,3]}|['d']?????????????????|+-------------------------------------------+----------------------+JSON_OVERLAPS

該函數(shù)用于判斷兩個(gè)JSON文檔是否有重疊

語(yǔ)法

JSON_OVERLAPS(json_doc1, json_doc2)

json_doc1: 必填。JSON文檔1json_doc2: 必填。JSON文檔2

返回值

如果兩個(gè)JSON文檔有重疊,返回 1;否則返回 0如果參數(shù)為NULL,返回NULL

重疊邏輯

如果兩個(gè)JSON文檔均為簡(jiǎn)單類型,相當(dāng)于判等操作,相等則為重疊如果兩個(gè)JSON文檔均為數(shù)組,如果至少有一個(gè)元素相同,則為重疊如果兩個(gè)JSON文檔均為對(duì)象,如果至少有 key-value 相同,則為重疊

測(cè)試

兩個(gè)基礎(chǔ)元素,就是簡(jiǎn)單的判等操作

SELECT?JSON_OVERLAPS('5',?'5');?#?1,?相等SELECT?JSON_OVERLAPS(''5'',?'5');?#?0,?類型不同,不相等

對(duì)于數(shù)組,需要有元素相同;如果是多維數(shù)組,子數(shù)組元素需要完全一樣

SELECT?JSON_OVERLAPS('[1,3,5,7]',?'[2,5,7]');??#?1,?存在相同的元素?5?和?7SELECT?JSON_OVERLAPS('[1,3,5,7]',?'[2,6,7]');?#?1,?存在相同的元素?7SELECT?JSON_OVERLAPS('[1,3,5,7]',?'[2,6,8]');?#?0,?沒(méi)有相同元素SELECT?JSON_OVERLAPS('[[1,2],[3,4],5]',?'[1,[2,3],[4,5]]');?#?0,?沒(méi)有相同元素SELECT?JSON_OVERLAPS('[[1,2],[3,4],5]',?'[[1,2],[2,3],[4,5]]');?#?1,?有相同元素?[1,2]

如果是對(duì)象,需要 key-value 完全一樣

SELECT?JSON_OVERLAPS('{'a':1,'b':10,'d':10}',?'{'c':1,'e':10,'f':1,'d':10}');?#?1,?相同key-value?'d':10SELECT?JSON_OVERLAPS('{'a':1,'b':10,'d':10}',?'{'a':5,'e':10,'f':1,'d':20}');?#?0,?沒(méi)有相同元素SELECT?JSON_OVERLAPS('{'a':1,'b':10,'d':[20,30]}',?'{'a':5,'e':10,'f':1,'d':[20]}');?#?0,?沒(méi)有相同元素

如果一個(gè)基礎(chǔ)類型和數(shù)組類型比較,基礎(chǔ)類型會(huì)被轉(zhuǎn)成數(shù)組類型

SELECT?JSON_OVERLAPS('[4,5,6,7]',?'6');??#?1,?[4,5,6,7]和?[6]?有相同元素?6SELECT?JSON_OVERLAPS('[4,5,6,7]',?''6'');?#?0,?類型不同,沒(méi)有相同元素JSON_SEARCH

對(duì)于給定的字符串,返回該字符串在 JSON 文檔中的路徑

語(yǔ)法

JSON_SEARCH(json_doc, one_or_all, search_str, escape_char, path...)

json_doc: 必填。JSON文檔

one_or_all: 必填。取值只能為 one 或者 all

one: 返回第一個(gè)匹配的路徑all: 以數(shù)組的形式返回所有匹配到的路徑,去重,無(wú)順序

search_str: 必填。要查詢的字符串,可以使用通配符

%: 匹配0個(gè)或多個(gè)字符_: 匹配一個(gè)字符

escape_char: 可選。如果 search_str 中包含 % 和 _,需要在他們之前添加轉(zhuǎn)移字符。默認(rèn)是 \。

path: 可選。指定在具體路徑下搜索

返回值

JSON_SEARCH() 函數(shù)返回一個(gè)給定字符串在一個(gè) JSON 文檔中的路徑。它返回一個(gè)路徑字符串或者由多個(gè)路徑組成的數(shù)組。

JSON_SEARCH() 函數(shù)將在以下情況下返回 NULL:

未搜索到指定的字符串JSON 文檔中不存在指定的 path任意一個(gè)參數(shù)為 NULL

JSON_SEARCH() 函數(shù)將在以下情況下返回錯(cuò)誤:

如果參數(shù) json 不是有效的 JSON 文檔,MySQL 將會(huì)給出錯(cuò)誤。如果參數(shù) path 不是有效的路徑表達(dá)式, MySQL 將會(huì)給出錯(cuò)誤。

測(cè)試

SET?@json_doc?=?'['abc',?[{'k':?'10'},?'def'],?{'x':'abc'},?{'y':'bcd'}]';select?JSON_SEARCH(@json_doc,?'one',?'abc');?#?'$[0]'select?JSON_SEARCH(@json_doc,?'all',?'abc');?#?['$[0]',?'$[2].x']select?JSON_SEARCH(@json_doc,?'all',?'ghi');?#?nullselect?JSON_SEARCH(@json_doc,?'all',?'10');?#?'$[1][0].k'??--?指定路徑select?JSON_SEARCH(@json_doc,?'all',?'10',?NULL,?'$[*][0].k');?#?'$[1][0].k'?select?JSON_SEARCH(@json_doc,?'all',?'10',?NULL,?'$[1][0]');?#?'$[1][0].k'?select?JSON_SEARCH(@json_doc,?'all',?'abc',?NULL,?'$[2]');?#?'$[2].x'?--?通配符select?JSON_SEARCH(@json_doc,?'all',?'%a%');?#?['$[0]',?'$[2].x']??select?JSON_SEARCH(@json_doc,?'all',?'%b%');?#?['$[0]',?'$[2].x',?'$[3].y']?select?JSON_SEARCH(@json_doc,?'all',?'%b%',?NULL,?'$[2]');?#?'$[2].x'???JSON_VALUE

該函數(shù)的作用是:查詢 JSON 文檔 path 下的值

語(yǔ)法

JSON_VALUE(json_doc, path [RETURNING type] [on_empty] [on_error])

on_empty:NULLERROR | DEFAULT valueON EMPTY

on_error:NULLERROR | DEFAULT valueON ERROR

參數(shù)

json_doc: 必填。JSON文檔

path: 必填。指定的路徑

RETURNING type: 可選。將結(jié)果轉(zhuǎn)為指定的類型,可以為如下類型:

FLOATDOUBLEDECIMALSIGNEDUNSIGNEDDATETIMEDATETIMEYEAR (MySQL 8.0.22 and later)CHARJSON

NULLERROR | DEFAULT valueON EMPTY

可選。如果指定了,它決定了指定路徑下沒(méi)有數(shù)據(jù)的返回值:

NULL ON EMPTY: 如果指定路徑下沒(méi)有數(shù)據(jù),JSON_VALUE() 函數(shù)將返回 NULL,這是默認(rèn)的行為。

DEFAULT value ON EMPTY: 如果指定路徑下沒(méi)有數(shù)據(jù),JSON_VALUE`() 函數(shù)將返回 value。

ERROR ON EMPTY: 如果指定路徑下沒(méi)有數(shù)據(jù),JSON_VALUE() 函數(shù)將拋出一個(gè)錯(cuò)誤。

NULLERROR | DEFAULT valueON 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ò)誤。

返回值

默認(rèn)以字符串的格式,返回 JSON 文檔在指定的路徑上的值;如果使用 RETURNING type 子句,會(huì)把結(jié)果轉(zhuǎn)為 type 類型

測(cè)試

SELECT?JSON_VALUE('{'fname':?'Joe',?'lname':?'Palmer'}',?'$.fname');?#?JoeSELECT?JSON_VALUE('{'item':?'shoes',?'price':?'49.95'}',?'$.price'?RETURNING?DECIMAL(4,2));?#?49.95SELECT?JSON_VALUE('{'item':?'shoes',?'price':?'49.95'}',?'$.total'?DEFAULT?100.00?ON?EMPTY);?#?100.00MEMBEROF

該函數(shù)用于判斷value,是否是數(shù)組 json_array 的元素

語(yǔ)法

value MEMBER_OF (json_array)

value: 必填。任意值,可以是一個(gè)簡(jiǎn)單類型或者 JSON

json_array: 必填。一個(gè)JSON數(shù)組

返回值

如果 value 是 json_array 中的元素,返回1;否則返回0

測(cè)試

SELECT?17?MEMBER?OF('[23,?'abc',?17,?'ab',?10]');?#?1SELECT?'17'?MEMBER?OF('[23,?'abc',?17,?'ab',?10]');?#?0,?類型不一致SELECT?'ab'?MEMBER?OF('[23,?'abc',?17,?'ab',?10]');?#?1SELECT?CAST('[4,5]'?AS?JSON)?MEMBER?OF('[[3,4],[4,5]]');?#?1SELECT?JSON_ARRAY(4,5)?MEMBER?OF('[[3,4],[4,5]]');?#?1

現(xiàn)在我們可以回過(guò)頭來(lái)看下文章開(kāi)頭要優(yōu)化的SQL:

這是表 info 字段存儲(chǔ)的數(shù)據(jù),如果字段有數(shù)據(jù),存儲(chǔ)對(duì)應(yīng)的數(shù)據(jù)類型;如果沒(méi)有數(shù)據(jù),存儲(chǔ) null。但是 string 類型的 value 有引號(hào),我們想去掉引號(hào);其次對(duì)于 null 值,也想替換成默認(rèn)值

{????'ulink':null,????'budget_mode':'BUDGET_MODE_DAY',????'hide_if_exists':0}

之前我們的SQL 是這樣的

select?id,???????replace(replace(json_extract(`info`,?'$.budget_mode'),?''',?''),?'null',?''),???????replace(replace(json_extract(`info`,?'$.budget'),?''',?''),?'null',?0),???????replace(replace(json_extract(`info`,?'$.bid'),?''',?''),?'null',?0),from?tablewhere?code?=?'xxx';

json_extract 是為了拿到對(duì)應(yīng)的 value,里面的 replace()是為了去掉引號(hào),外面的 replace 是為了將 null 替換為默認(rèn)值。對(duì)于去掉引號(hào),我們可以使用 column ->> path 簡(jiǎn)化:

select?id,???????replace(info?->>?'$.budget_mode',?'null',?''),???????replace(info?->>?'$.budget',?'null',?0),???????replace(info?->>?'$.bid',?'null',?0)from?ad_adwhere?id?=?6993;總結(jié)

本篇文章一共介紹了如下幾個(gè)函數(shù):

JSON_CONTAINS:判斷一個(gè) JSON 文檔是否包含另一個(gè) JSON 文檔JSON_CONTAINS_PATH:判斷一個(gè)JSON文檔,是否包含一個(gè)或者多個(gè)路徑 pathJSON_EXTRACT:從 JSON 文檔中查詢路徑對(duì)應(yīng)的 value 值column->path:JSON_EXTRACT 只有兩個(gè)參數(shù)時(shí)的縮寫column->>path:相對(duì)于 '->',增加了去除 引號(hào) 的功能JSON_KEYS:返回 JSON 文檔或者指定 path 下最頂層的所有 keyJSON_OVERLAPS:判斷兩個(gè) JSON 文檔是否有重疊JSON_SEARCH:返回給定字符串在 JSON 文檔中的路徑JSON_VALUE:查詢 JSON 文檔 path 下的值MEMBEROF:判斷一個(gè)值是否為一個(gè) JSON 數(shù)組中的元素

到此這篇關(guān)于MySQL實(shí)現(xiàn)查詢處理JSON數(shù)據(jù)的示例詳解的文章就介紹到這了,更多相關(guān)MySQL查詢處理JSON數(shù)據(jù)內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: MySQL 數(shù)據(jù)庫(kù)
主站蜘蛛池模板: 一区二区三区四区五区在线视频 | 精品国产乱码久久久久 | 少妇玉梅抽搐呻吟 | 黑人好猛厉害爽受不了好大撑 | 成年男女免费视频 | 99热最新| 国产亚洲精品久久久久久无几年桃 | 日本一区二区免费在线观看 | 粉嫩av一区二区三区在线播放 | 一区二区精品视频在线观看 | 亚洲精品久久中文字幕 | 亚洲精品国品乱码久久久久 | 久久国产精品久久精品国产 | 黄色网址在线免费看 | 午夜爱爱影院 | 久久久久久久国产精品 | 7777少妇色视频免费播放 | 窝窝视频在线 | 亚洲天堂av网站 | 日韩av免费在线观看 | 国产精品国产三级国产av中文 | 7777色鬼xxxⅹ欧美色妇 | 中文字幕av高清片 | 日韩中文字幕精品 | 巨胸喷奶水视频www 午夜无码国产理论在线 | 成人精品免费视频在线观看 | 六月丁香在线视频 | 可以在线看黄的网站 | 天天躁夜夜躁狠狠眼泪 | 高清国产mv在线观看 | 国产又黄又大又粗的视频 | 久草不卡 | 国产精品777777 | 91丨porny丨国产丝袜福利 | 亚洲精品综合五月久久小说 | 瑟瑟在线观看 | 亚洲国产乱 | 伊人久久大香线蕉av一区 | 中国老熟女重囗味hdxx | 欧美男人亚洲天堂 | 日本一级大毛片a一 | 国产日产精品一区二区三区四区的观看方式 | 性一交一伦一理一色一情 | 色综合综合色 | 狠狠躁天天躁夜夜添人人 | 国产女优在线播放 | 激情综合色综合啪啪五月丁香 | 亚州av久久精品美女模特图片 | 国产一级二级视频 | 在线不卡日韩 | 亚洲午夜精品久久久久久 | 黄色网战入口 | 欧美激情一二三 | 8888四色奇米在线观看 | 4484在线观看视频 | 欧美日韩激情视频 | 综合人妻久久一区二区精品 | 久久久久9| 国产经典一区二区三区 | 搐搐国产丨区2区精品av | 91调教视频 | 国产一区啪啪 | 亚洲欧洲无码av电影在线观看 | 小舞同人18吸乳羞羞在线观看 | 欧美日韩视频免费 | 91视频毛片 | 800av在线视频 | 精品久久久久久中文字幕 | 国产农村妇女高潮大叫 | 黄色一几片| 亚洲第一se情网站 | 97国精产品无人区一码二码 | 你懂的在线观看网址 | 日本免费在线观看 | 日韩视频一区二区三区在线观看 | 91在线免费视频 | 中国成人毛片 | 精品无码成人网站久久久久久 | 福利视频第一页 | 精品字幕 | 人人人妻人人人妻人人人 | 欧美成人性生活片 | 女人被男人爽到呻吟的视频 | 国产成人毛片 | 韩国三级做爰楼梯在线 | av在观看 | 在线免费看污网站 | 波多野结衣av高清一区二区三区 | 国产有码在线观看 | 成a人片亚洲日本久久 | 少妇精品一区二区 | 在线激情小视频 | 手机在线看永久av片免费 | 久久国产精品影视 | 欧美一区二区高清视频 | 亚洲图片三区 | 国产精品久久久久久2021 | 国产精品无码久久久久成人影院 | 午夜无码一区二区三区在线观看 | 国产91传媒 | 天堂av一区二区 | 任你躁在线精品免费 | 精品欧美一区二区三区精品久久 | 国产亚洲精品久久久久久网站 | 欧美一区2区三区4区公司 | 狠狠色综合色综合网络 | 亚洲欧美xxx| 麻豆国产一区二区三区 | 四虎视频在线精品免费网址 | 午夜免费视频 | 国产人妖ts重口系列网站观看 | 亚洲欧洲综合 | 日本性欧美 | 欧美成人一区二免费视频小说 | 国产一区二区三区四区五区密私 | 在线看亚洲 | 国产又黄视频 | 亚洲国产精品高潮呻吟久久 | 免费av在线网 | 亚洲 中文 欧美 日韩 在线观看 | 在线观看老湿视频福利 | 国产免费一区二区三区在线能观看 | 国产在线国偷精品免费看 | 久久久久久久精 | 国产一区二区三区 | 欧美性受xxxx黒人xyx性爽 | 免费观看日本 | 久久婷婷五月国产色综合 | 日韩精品tv | 欧美激情国产在线 | 中文字幕亚洲天堂 | 日本一区二区三区在线免费观看 | 在线观看成人免费视频 | 国产激情无码一区二区 | 国产成人艳妇aa视频在线 | 亚洲成人网在线播放 | 老司机免费在线视频 | 国产亚洲精品久久久久四川人 | 成人免费视频免费观看 | 少妇三级全黄 | 欧美亚洲高清 | 成人一区二区免费视频 | 国产高清免费在线观看 | 久久久久久九九99精品 | 免费a级黄毛片 | 亚洲精品综合一区二区三区在线 | 天天操夜夜添 | 国产精品新婚之夜泄露女同 | 欧美日韩国产精品久久 | 少妇精品久久久一区二区三区 | 久久成人精品视频 | 国产白丝精品91爽爽久 | 国产69精品久久久久孕妇大杂乱 | 看黄色特级片 | 久久精品亚洲国产奇米99 | 国产成人在线一区二区 | 丰满少妇久久久久久久 | 麻豆一区二区在线 | 午夜视频在线观看吗 | a国产一区二区免费入口 | 欧美人与性囗牲恔配 | 午夜男人天堂 | www久久爱69com | 色哟色哟色精品 | 精品国产1区2区3区 精品国产31久久久久久 | 中国凸偷窥xxxx自由视频妇科 | 亚洲狠狠婷婷综合久久久久图片 | 精品xxxxx| 午夜免费网址 | 国产清纯白嫩初高生在线观看性色 | 寂寞骚妇被后入式爆草抓爆 | 国产99自拍| 亚洲国产成人一区 | 青青草免费视频在线播放 | 国产无遮挡裸体免费视频在线观看 | 大奶子在线| 美女黄色一级 | 国产乱码精品一区二区三区四川人 | 亚洲精品大片www | 亚洲欧美色图片 | 六月激情网 | 日日干干 | 少妇裸体长淫交视频免费观看 | 性欧美欧美巨大69 | 加勒比综合 | 91视频久久久久 | 亚洲精品午夜无码电影网 | 欧美黑人孕妇孕交 | 高h纯肉无码视频在线观看 亚洲国产成人av毛片大全 | 中文字幕一路线二路线三路线 | 中文在线中文资源不卡无 | 91精品国产毛片 | 在线成人毛片 | 91精品国产91久久久久游泳池 | 国产网站一区 | 午夜激情在线观看 | 勾搭足浴女技师国产在线 | 性高湖久久久久久久久aaaaa | 国产亚洲成av人在线观看导航 | 精品视频久久久久久久 | 久久久婷婷五月亚洲97号色 | 香港三级日本三级妇三级 | 极品福利视频 | 9人人澡人人爽人人精品 | 一级特黄aaa毛片在线视频 | 国产精品毛片完整版视频 | 免费精品视频一区二区三区 | 女性高爱潮视频 | 久久久一区二区 | 中文天堂av| 国产最新在线 | 香蕉网在线观看 | 乖疼润滑双性初h | 69堂精品 | 国产精品6区 | 日韩精品在线一区二区 | 欧美午夜在线视频 | 午夜精品久久久久久久 | 日韩在线一二 | 国产男女猛烈无遮挡免费视频 | 欧美精品一区二区三区在线 | 韩国日本在线观看 | 四虎色| 久久精品中文騷妇女内射 | 久久妇女 | 亚洲国产精品肉丝袜久久 | 538国产视频 | 国产精品人妻在线观看 | 少妇苏晴的性荡生活 | 亚洲国内自拍 | 亚洲在线免费 | 欧美乱妇高清无乱码免费 | 亚洲欧美自偷自拍 | 男生草女生视频 | 深夜在线免费观看 | 亚洲色无码一区二区三区 | 成人免费无码大片a毛片 | 国产高清av首播原创麻豆 | 红杏aⅴ成人免费视频 | 亚洲1区 | av在线播放观看 | 人人爽久久涩噜噜噜av | 伊人久久大香线蕉av色婷婷色 | 亚洲精品88欧美一区二区 | 色噜噜综合| 国产精品久久久久久影视 | 日韩精品一区二区三区在线播放 | 免费无遮挡无码永久视频 | 4444亚洲人成无码网在线观看 | 免费激情片 | 得得啪在线| 午夜日韩av | 欧美性猛交xxxxx水多 | 免费污网站在线观看 | 欧美国产综合色视频 | 国产精品久久久久久白浆 | 天天干天天射综合网 | 久久久一级 | 尤物av午夜精品一区二区入口 | 午夜爱爱网 | 精品人妻伦九区久久aaa片69 | 蜜桃成人在线 | 国产一区二区精品丝袜 | 女同性aaaaa一区二区 | 日日摸日日碰夜夜爽av | 尤物精品| 91精品国产综合久久福利软件 | 日本污网站 | 欧美激情视频一区 | 欧美人体做爰大胆视频 | 99精品人妻无码专区在线视频区 | 性――交――性――乱睡觉 | 三级伦理精品专区 | 丁香婷婷激情五月 | 色鬼久久 | 热久久影院| 天堂视频一区 | 911亚洲精品 | 一区二区国产精品精华液 | 永久免费不卡在线观看黄网站 | 黑人一区| 国内揄拍国产精品人妻门事件 | 久草热在线视频 | 操女网站 | 蜜臀久久99精品久久久久野外 | 国产精品日本一区二区不卡视频 | 国产欧美一区二区精品久久 | 免费毛片一区二区三区 | 性久久久久久 | 91粉色视频 | 极品少妇hdxx麻豆hdxx | 在线不卡一区二区 | 红杏亚洲影院一区二区三区 | 亚洲午夜一区二区 | 青青草自拍视频 | 这里只有精品视频 | 福利小视频在线播放 | 亚洲不卡高清视频 | 久久一区二区三 | 色 综合 欧美 亚洲 国产 | 精品国产自在精品国产精小说 | 鲁丝一区二区三区免费 | 国产肥老妇对白清 | 91色交视频| 国外精品jvid在线观看 | 97超碰人人干 | 美女午夜影院 | 国产午夜不卡片免费视频 | 国产麻豆一区二区三区在线观看 | 亚洲成a人v欧美综合天堂麻豆 | 成人免费毛片果冻 | 91嫩草私人成人亚洲影院 | 欧美日韩中文在线视频 | 欧美激情第1页 | 日本伊人精品一区二区三区 | www成人黄色 | 成人欧美一区二区三区白人 | a在线观看免费网站大全 | 亚洲国产精品久久久久久久 | 国产又黄又猛 | 亚洲欧美韩国 | 国产美女精品人人做人人爽 | 成人欧美一级特黄 | 九九在线视频免费观看精彩 | 玉米地疯狂的吸允她的奶视频 | 一区二区三区国产亚洲网站 | 波多野结衣在线精品视频 | 国内少妇毛片视频 | 中文字幕人成乱码熟女免费 | 91在线欧美 | 久久九九久精品国产 | а√天堂资源8在线官网在线 | 久久理论视频 | 毛片哪里看| 少妇饥渴偷公乱h姚蕊 | 黄色一级生活片 | 国产伦理网站 | 大江大河第三部50集在线观看旭豪 | 亚洲综合另类小说 | 99在线精品免费视频 | 欧美极品在线 | 日韩理论在线观看 | 久久亚洲综合 | 高h禁伦亲女1v2 | 日b免费视频 | 国产婷婷精品任我爽欧美 | 日本黄色性视频 | 黄色视屏在线 | 日韩av在线一区 | 天干夜天天夜天干天在线观看 | 国产第一福利 | 内射合集对白在线 | 伊人成人在线视频 | 97夜夜澡人人爽人人喊中国片 | 狠狠躁夜夜躁av网站中文字幕 | 日本久久高清 | 高h肉放荡爽全文寂寞少妇 高h肉各种姿势g短篇np视频 | 日韩精品久久一区二区 | 欧美色综合网 | 国产欧美精品日韩区二区麻豆天美 | 4438x成人免费 | 欧美成人免费观看视频 | 成人午夜免费福利 | 欧美精品一区二区视频 | 国产又色又爽又黄又免费 | 97xxxxx| 在线观看毛片av | 美女隐私黄www网站免费 | 污版视频在线观看 | 国产毛片毛片 | 久久久精品国产sm最大网站 | 一级性感毛片 | 日韩毛片免费在线观看 | asian日本若图pics | 国产无套粉嫩白浆在线观看 | 久久狠狠一本精品综合网 | 99精品国产免费 | 中文字幕观看在线 | 国产精品国产三级国产在线观什 | 欧美成人猛片aaaaaaa | 欧美在线中文字幕 | 伊人久久精品视频 | 成人午夜又粗又硬又大 | 国产欧美一区二区三区不卡视频 | 99视频在线精品免费观看2 | 免费av在线网 | 一本精品99久久精品77 | 91视频88av| 在线观看国产成人av片 | 亚洲福利午夜 | 天天射天天干天天色 | 日韩中文一区 | 久久久久久久久久久99 | 国产激情久久久久影院老熟女 | 欧美多人片高潮野外做片黑人 | 91精品国产日韩一区二区三区 | 韩国午夜av| 亚洲精品二区 | 经典三级伦理另类基地 | 久久免费看少妇高清激情 | 亚洲国产二区 | 久久一区二区精品 | 午夜免费一级片 | 欧美成人一二区 | 韩国三级丰满少妇高潮 | 国产精品国产三级国产专区53 | 中文成人无字幕乱码精品区 | 国产高清久久久 | 91在线视频在线观看 | 欧美色影院 | 少妇做爰免费视频网站图片 | 国产成人鲁鲁免费视频a | 国产性生交xxxxx无码 | 黄色免费在线网址 | 欧美成人性色 | 免费的毛片视频 | 成人性生交大片免费看在线播放 | 中文字幕精品一区二区三区精品 | 国产精品88久久久久久妇女 | 欧美人与动牲交片免费 | 91精品国产综合久 | 欧美1页| 国产精品丝袜 | 中文字幕热久久久久久久 | 粗大的内捧猛烈进出视频 | 久久久精品人妻无码专区不卡 | 一色桃子av大全在线播放 | 亚洲九九精品 | 91噜噜噜 | 毛片大全免费看 | www日韩com| 主人~别揉了~尿了~小说 | 精品国产免费人成网站 | 国产精品成人一区二区艾草 | 69伊人| 无遮挡呻吟娇喘视频免费播放 | 欧美一区二区三区 | 伊人久久大香线蕉综合影院首页 | 国产伦精品一区二区三区免费 | 波多野42部无码喷潮在线 | 国产精品人妻系列21p | 国产91精 | 久久婷婷五月综合97色直播 | 国产精品爽| 性做久久久久久 | 久久久久久久一区 | 国产色在线 | 日韩 日韩精品无码一区二区 | 久久久精品久久日韩一区综合 | 欧美丰满熟妇xxxx | 在线观看日韩一区二区 | 大片av| 小罗莉极品一线天在线 | 1000部免费毛片在线播放 | 欧美人与动物xxxxx | 日本a级片视频 | 亚洲欧美中文字幕5发布 | 国产精品亚洲一区二区三区天天看 | 久久亚洲日韩精品一区二区三区 | 亚洲精品社区 | 成人性视频免费网站 | 午夜精品射精入后重之免费观看 | 69式视频 | 亚洲黄色免费网站 | 青青草97国产精品麻豆 | 亚洲人免费 | 日批免费观看视频 | 欧美多p视频 | 少妇日韩 | 嫩草影院在线视频 | 特级毛片av| 性xxxx搡xxxxx搡欧美 | 午夜精品久久久久久久96蜜桃 | 亚洲一区二区三区四区五区午夜 | 国内自拍欧美 | 婷婷开心色四房播播 | 国产色综合久久无码有码 | 久久久久久不卡 | 97无人区码一码二码三码 | 老头与老头性ⅹxx视频 | 国产精品片 | 奇米久久| 欧美极品少妇xxxxⅹ猛交 | 天堂中文字幕免费一区 | 日韩精品一区二区中文字幕 | 一个人看的免费高清www视频 | 亚洲久久影院 | 国产美女久久久亚洲综合 | 尤物视频在线看 | 我要操av | 亚洲国产精品女主播 | 中文在线字幕免费观看电 | 久久久久成人精品免费播放动漫 | 在线视频观看一区 | 国产成人无码专区 | 任我爽精品视频在线观看 | 欧美日韩高清在线播放 | 男女做爰猛烈啪啪吃奶动床戏麻豆 | 一级特黄aa大片 | 东南亚毛片 | www国产国人免费观看视频 | 轻轻草在线视频 | 亚洲国产精品女人久久久 | 人人揉人人捏人人添 | 我要看一级黄色毛片 | 亚洲天堂一区 | 日韩精品无码人妻一区二区三区 | 亚洲尤物视频 | 成人a视频片观看免费 | 国产肉体xxxx裸体784大胆 | 欧美巨大双龙性猛交乱大 | 992tv人人草 992tv又爽又黄的免费视频 | 国产三级精品片 | 精品久久久中文字幕人妻 | 极品白嫩的小少妇avove | 一个人在线免费观看www视频 | 四虎影视成人永久免费观看亚洲欧美 | 精品国产一区二区三区av爱情岛 | 国产一区网 | 96久久精品 | 色欲狠狠躁天天躁无码中文字幕 | 国产白浆在线 | 在线观看黄色小视频 | 亚洲第一页在线观看 | 日本美女交配 | 欧美午夜精品一区二区蜜桃 | 少妇无套内谢免费视频 | 四虎国产成人永久精品免费 | 国产天堂一区 | 精品亚洲欧美高清在线观看 | 中文字幕日韩精品有码视频 | 中文字幕av无码一区二区三区电影 | 日本videos多次高潮 | 无码人妻一区二区三区免费视频 | 五月天中文字幕在线 | 亚洲综合亚洲 | 国产精品九九九九九 | 一级在线免费视频 | 国产一区二区三区小说 | 黄a免费网络 | 粉嫩91精品久久久久久久99蜜桃 | 伊人久久青青 | 男女高潮又爽又黄又无遮挡 | 中国一级黄色大片 | 性xxxxx大片做受免费视 | 久久久xxxx | 亚洲天堂成人 | 97视频人人免费看 | 免费精品久久久久久久一区二区 | yes4444视频在线观看 | 精品国产九九九 | 台湾女老板性三级 | 国产经典一区二区三区 | 中文在线a∨在线 | 亚洲在线精品视频 | 日本成a人片在线播放 | 性荡视频播放在线视频 | 国产又粗又硬又大爽黄老大爷视 | chinese精品自拍hd | 真实国产精品视频400部 | 欧美色欧美亚洲另类七区 | 岛国精品一区二区 | 日日干干 | 亚洲免费高清 | 337p粉嫩大胆噜噜噜亚瑟影院 | 亚洲精品国产熟女久久久 | 精品国产一区二区三区色欲 | 在线男人天堂 | 中文字幕一区二区三区在线观看 | 色婷婷成人| jizz日本在线 | 黑人巨大精品欧美一区二区 | 草草影院在线播放 | 91传媒理伦片在线观看 | 国产高清免费在线观看 | 国产精品福利一区 | 亚洲aⅴ精品一区二区三区91 | 一起射导航 | 日本韩国欧美一区二区三区 | 欧美一区二区喷水白浆视频 | 欧美一级视频免费 | 久久免费在线观看视频 | 免费观看一区二区三区视频 | 我和丰满老女人性销魂 | 精品黄色在线 | 136福利视频导航 | 夜夜爽妓女8888视频免费观看 | 91在线看| 久久久亚洲精品一区二区三区浴池 | 婷婷成人亚洲综合国产xv88 | 97视频网址| 久久久国产高清 | 亚洲精品国偷拍自产在线观看 | 69久久精品 | 日本高清xxx| 一个人在线观看免费中文www | 深夜视频免费在线观看 | 国产午夜一级一片免费播放 | 白洁av | 欧美一级视频免费观看 | 欧美久久免费观看 | 日韩在线免费 | 欧美成人福利视频 | 少妇性i交大片免费看 | 98国产精品综合一区二区三区 | 婷婷色国产偷v国产偷v小说 | 精品无人区一区二区三区 | 婷婷开心激情网 | 人人舔人人爽 | 超碰av人人 | 久久免费看a级毛毛片 | 麻豆福利影院 | 九九九免费视频 | 五月激情婷婷丁香 | 色哟哟国产精品免费观看 | 久久精品手机观看 |