mysql8.0 JSON_CONTAINS的使用說明
JSON_CONTAINS的使用
語法
JSON_CONTAINS(json_doc, val[, path])
案例
select * from tb where info->'$.name' = '特價促銷' or JSON_CONTAINS(info->'$[*].name', '"特價促銷"', '$')
SET @json = '{"A": 0, "B": {"C": 1}, "D": 2}'; SELECT JSON_CONTAINS(@json, '2', '$.A'); +----------------------------------+ | JSON_CONTAINS(@json, '2', '$.A') | +----------------------------------+ | 0 | +----------------------------------+ SELECT JSON_CONTAINS(@json, '2', '$.D'); +----------------------------------+ | JSON_CONTAINS(@json, '2', '$.D') | +----------------------------------+ | 1 | +----------------------------------+ SELECT JSON_CONTAINS(@json, '{"C": 1}', '$.A'); +-----------------------------------------+ | JSON_CONTAINS(@json, '{"C": 1}', '$.A') | +-----------------------------------------+ | 0 | +-----------------------------------------+ SELECT JSON_CONTAINS(@json, '{"C": 1}', '$.B'); +-----------------------------------------+ | JSON_CONTAINS(@json, '{"C": 1}', '$.B') | +-----------------------------------------+ | 1 | +-----------------------------------------+
JSON_CONTAINS函數問題
mysql 存的是[14,15]這種數據結構 查詢的解決辦法
結構如下
學生類:
@Column(value = "subject_ids", type = MySqlTypeConstant.TEXT) @ColumnComment(value = "科目。可多選,格式如[1,2,3]") private List<Long> subjectIds;
數據庫類型:text
mysql 存儲類型: [14,15]
這個時候根據科目ID去查詢有那些學生選擇瞭14這個科目得時候就不能用in這個語法瞭
這個時候就可以使用
SELECT * FROM `t_student` where JSON_CONTAINS(subject_ids, '14')
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- MySQL中的JSON字段List成員檢查
- MySQL 行轉列詳情
- mysql根據json字段內容作為查詢條件(包括json數組)檢索數據
- Lombok使用@Tolerate實現沖突兼容問題
- MySQL 8.0 可以操作 JSON 瞭