1. 程式人生 > 其它 >MySQL 根據JSON型別的欄位進行過濾資料的方式

MySQL 根據JSON型別的欄位進行過濾資料的方式

第一種方式:JSON_CONTAINS 函式 ; 執行相等形式的比較 注意:值的型別一定要相同,不然會報錯

文件地址:https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html#function_json-contains

select JSON_CONTAINS('{"tagId": 18, "tagName": "廣告", "tagType": "1", "valueType": "default"}', '18','$.tagId')

但是這種只能匹配單個值得,無法多值匹配

第二種方式: MEMBER OF 函式 ; 執行相等形式的比較 此方式無需在意型別的匹配

文件地址: https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html#operator_member-of

SELECT 2 MEMBER OF(CONCAT('[',(select GROUP_CONCAT(n) FROM (SELECT 1 AS n union select 2) t),']'));

通過 MEMBER OF寫得話,可以匹配多值,相當於IN查詢

第三種方式:JSON表,這種方式可以適用於更復雜的場景,比如IN獲取其他查詢的方式; 大白話就是:宣告JSON的結構,將JSON轉換為一個臨時表

文件地址:https://dev.mysql.com/doc/refman/8.0/en/json-table-functions.html#function_json-table

select * from JSON_TABLE('[ {"name":"小明","age":59} ]','$[*]' COLUMNS(name VARCHAR(200) PATH '$.name',age int PATH '$.age')) AS t 
複製請註明出處,在世界中掙扎的灰太狼