【mysql】mysql5.7支持的json字段查詢【mybatis】

mysql5.7支持的json字段查詢html

參考:http://www.javashuo.com/article/p-cructvhu-cw.htmlmysql

參考:http://www.javashuo.com/article/p-ztjtkugx-na.htmlsql

 

使用示例:json

存儲結構以下:數組

 

1.以json字段做爲查詢條件:[json字段所有是JSONObject類型的]

SELECT
    * 
FROM
    worksheet_data_table_data w 
WHERE
    w.val -> '$.input_0' LIKE '%0%'

 

查詢結果:spa

 

 

 

2.判斷JSON字段,是JSONObject類型仍是JSONArray類型

SELECT
    w.val,
    JSON_TYPE( w.val ) 
FROM
    worksheet_data_table_data w

 

查詢結果:code

 

 

3.查詢JSON字段是 Array的JSON類型的

SELECT
    w.val,
    JSON_TYPE( w.val ) 
FROM
    worksheet_data_table_data w

where 
JSON_TYPE(w.val) = 'ARRAY'

 

查詢結果:htm

 

 

4.以json字段爲查詢條件[查詢JSONArray]類型  [like查詢]

SELECT
    * 
FROM
    worksheet_data_table_data w 
WHERE
    w.val -> '$[*].*' LIKE '%峯%'

解釋:對象

w.val -> '$[*].*' LIKE '%峯%'

1.w.val字段是JSON數組[無所謂JSONObject仍是JSONArray]
[反正若是按照對象查,那數組是匹配不到的]
[反之,若是按照數組查,對象也是匹配不到的]


2.'$[*].*' 
表明查詢JSONArray 數組格式的JSON字符串中,
第一個*  表明任意下標
第二個* 表明任意屬性


3.LIKE '%峯%'
匹配條件和正常sql 查詢條件同樣 寫

 查詢結果以下:blog

 

5.以json字段爲查詢條件[查詢JSONArray]類型  [=查詢]

 

等於查詢不一樣於like的查詢,須要在外面包裹一層JSON_CONTAINS()

 

好比數據集以下:

 

 想要 查詢 出 name字段  既等於"亞瑟"  又等於"jj"的json字段

SELECT
    id,
    `dept-user_0`
FROM
    worksheet_data_30  d
WHERE
    JSON_CONTAINS( d.`dept-user_0`->'$[*].name' ,  '"jj"', '$')
    
    AND
    
    JSON_CONTAINS( d.`dept-user_0`->'$[*].name' ,  '"亞瑟"', '$')

 

查詢結果以下:

相關文章
相關標籤/搜索