欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL 如何查詢 JSON 數(shù)組是否包含特定的值

 更新時間:2023年11月01日 11:43:44   作者:knan-阿樂  
本文給大家介紹MySQL 如何查詢 JSON 數(shù)組是否包含特定的值,假設(shè)定義了一張表 School,其中字段 stages 為 JSON 類型,本文通過實(shí)例代碼給大家詳細(xì)講解,感興趣的朋友一起看看吧

MySQL 查詢 JSON 數(shù)組是否包含特定的值

假設(shè)定義了一張表 School,其中字段 stages 為 JSON 類型

CREATE TABLE `schools` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `stages` json DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC;

插入測試數(shù)據(jù)

INSERT INTO `schools` ( `stages` ) VALUES ( '[2]' );

查詢表中字段 stages 中包含數(shù)值 2 的所有記錄

JSON_EXTRACT & LIKE

使用 JSON_EXTRACT 函數(shù),可以從 JSON 中提取出指定位置的值。但是它只能提取某個特定位置的值,不能查詢是否包含某個值。所以如果需要查詢 JSON 數(shù)組是否包含某個值,還需補(bǔ)充使用 LIKE。

-- 使用JSON_EXTRACT函數(shù)將數(shù)組的第一個元素提取出來, 然后使用LIKE聲明匹配是否包含字符串"2"
-- 注意, 這種方式只能用于已知數(shù)組中元素位置的情況, 它無法用于查找一個值是否在任何位置上都存在
SELECT
	* 
FROM
	`schools` AS `SchoolModel` 
WHERE
	JSON_EXTRACT( stages, '$[0]' ) LIKE '%2%'

JSON_CONTAINS

MySQL 5.7 版本引入了 JSON_CONTAINS 函數(shù),用于判斷一個 JSON 數(shù)組是否包含某個元素。

-- 第一個參數(shù)是查詢的JSON對象, 第二個參數(shù)是需要查找的JSON對象(在這里是包含一個字符串"2"的JSON數(shù)組), 第三個參數(shù)是$(表示查詢應(yīng)該從整個JSON對象開始)
-- 注意, 如果想搜索一個不是獨(dú)立字符串的值, 例如數(shù)字或布爾值, 需要將值轉(zhuǎn)換成JSON格
-- 例如, 如果想搜索數(shù)字2, 在JSON格式中, 需要寫成'2'而不是原始數(shù)字2
SELECT
	* 
FROM
	`schools` AS `SchoolModel` 
WHERE
	JSON_CONTAINS(
		stages,
		'2', -- '[2]'
	'$' 
	)

JSON_CONTAINS 函數(shù)同樣可以用于搜索嵌套在一個對象或數(shù)組中的元素。

-- 這個查詢將返回空結(jié)果, 因?yàn)镴SON數(shù)組中沒有{"name":"小學(xué)"}
SELECT
	* 
FROM
	`schools` 
WHERE
	JSON_CONTAINS( `stages`, '{"name":"小學(xué)"}', "$" );

參考資料

https://deepinout.com/mysql/mysql-questions/568_mysql_select_where_json_array_contains.html  

到此這篇關(guān)于MySQL 查詢 JSON 數(shù)組是否包含特定的值的文章就介紹到這了,更多相關(guān)MySQL 查詢 JSON 數(shù)組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL中?LBCC?和?MVCC?的理解及常見問題示例

    MySQL中?LBCC?和?MVCC?的理解及常見問題示例

    這篇文章主要介紹了MySQL中LBCC和MVCC的理解及常見問題示例,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,感興趣的朋友可以參考一下
    2022-09-09
  • mysql免安裝沒有任何root權(quán)限

    mysql免安裝沒有任何root權(quán)限

    這篇文章主要介紹了mysql免安裝沒有任何root權(quán)限的安裝與配置教程,本文圖文并茂給大家介紹的非常詳細(xì),需要的朋友參考下
    2017-01-01
  • mysql分頁原理和高效率的mysql分頁查詢語句

    mysql分頁原理和高效率的mysql分頁查詢語句

    這篇文章主要介紹了mysql分頁原理和高效率的mysql分頁查詢語句,大家參考使用吧
    2014-01-01
  • sql語句優(yōu)化的一般步驟詳解

    sql語句優(yōu)化的一般步驟詳解

    網(wǎng)上關(guān)于SQL優(yōu)化的教程很多,但是比較雜亂,近日有空整理了一下,寫出來跟大家分享,下面這篇文章主要給大家分享介紹了關(guān)于sql語句優(yōu)化的一般步驟,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • 避坑:Sql中?in?和not?in中有null值的情況說明

    避坑:Sql中?in?和not?in中有null值的情況說明

    這篇文章主要介紹了避坑:Sql中?in?和not?in中有null值的情況說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • MySQL INSERT INTO SELECT時自增Id不連續(xù)問題及解決

    MySQL INSERT INTO SELECT時自增Id不連續(xù)問題及解決

    這篇文章主要介紹了INSERT INTO SELECT時自增Id不連續(xù)問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • mysql 將字段time按天/月/年分組

    mysql 將字段time按天/月/年分組

    表中有一個字段time,格式為Unix時間戳,現(xiàn)需要按照該字段統(tǒng)計每天的記錄數(shù)并按天/月/年分組
    2014-07-07
  • AlmaLinux 9 安裝 MySQL 8.0.32的詳細(xì)過程

    AlmaLinux 9 安裝 MySQL 8.0.32的詳細(xì)過程

    這篇文章主要介紹了AlmaLinux 9 安裝 MySQL 8.0.32的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • MySQL內(nèi)存使用之線程獨(dú)享介紹

    MySQL內(nèi)存使用之線程獨(dú)享介紹

    這篇文章主要介紹了MySQL內(nèi)存使用之線程獨(dú)享介紹,線程獨(dú)享內(nèi)存主要用于各客戶端連接線程存儲各種操作的獨(dú)享數(shù)據(jù),如線程棧信息,分組排序操作,數(shù)據(jù)讀寫緩沖,結(jié)果集暫存等等,而且大多數(shù)可以通過相關(guān)參數(shù)來控制內(nèi)存的使用量,需要的朋友可以參考下
    2014-12-12
  • Linux中MySQL 雙主復(fù)制的配置指南

    Linux中MySQL 雙主復(fù)制的配置指南

    在數(shù)據(jù)驅(qū)動的時代,數(shù)據(jù)庫的高可用性和數(shù)據(jù)一致性是每個企業(yè)必須考慮的重要問題,MySQL 雙主復(fù)制提供了一種有效的解決方案,通過配置兩臺服務(wù)器互為主從,保證數(shù)據(jù)的實(shí)時同步和高可用性
    2024-07-07

最新評論