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 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM