亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

mysql如何匹配數(shù)組字段中的某一個(gè)具體值

 更新時(shí)間:2024年11月06日 09:13:54   作者:樘棣寂寂  
在數(shù)據(jù)庫操作中,有時(shí)需要查詢數(shù)組字段中包含特定值的數(shù)據(jù),傳統(tǒng)like查詢可能會(huì)帶來錯(cuò)誤結(jié)果,如查詢包含數(shù)字1的數(shù)組可能錯(cuò)誤返回包含數(shù)字10的結(jié)果,為此,可以使用MySQL的FIND_IN_SET函數(shù)或REGEXP正則表達(dá)式進(jìn)行精確匹配,FIND_IN_SET適用于匹配單個(gè)固定值

應(yīng)用背景

業(yè)務(wù)表中的某個(gè)字段存儲(chǔ)的值為數(shù)組,例如 1,2,3 。

現(xiàn)在需要查詢其中一個(gè)值是數(shù)組里面的對應(yīng)的一個(gè)值,該如何匹配。

就比如subject這個(gè)字段為一個(gè)數(shù)組,現(xiàn)在需要查詢subject包含1的學(xué)生。

使用模糊查詢的問題

因?yàn)閟ubject里面存的不是具體的一個(gè)值,所以使用=顯然是不行的,這個(gè)時(shí)候大家首先會(huì)想到like的模糊查詢,我們一起來看看效果

SELECT
	* 
FROM
	`stu_c` 
WHERE
	subject LIKE '%1%'

執(zhí)行結(jié)果

可以看到將張三跟王五都查出來了,這顯然跟我們的需求不符,需求是只包含1的,應(yīng)該只查出來張三這條數(shù)據(jù)才對。

解決方案一

使用mysql中的FIND_IN_SET(str,fieldName)函數(shù),str是要查詢的字符串,fieldName是字段名,參數(shù)以“,”分隔,例如1,2,3

匹配單個(gè)(只包含1)sql語句如下

SELECT * FROM stu_c WHERE FIND_IN_SET('1', subject) > 0 

匹配單個(gè)(只包含1)執(zhí)行結(jié)果

查出了subject包含1的學(xué)生信息

匹配多個(gè)(包含1跟3)sql語句如下

SELECT * FROM stu_c
WHERE FIND_IN_SET('1', subject) > 0 OR FIND_IN_SET('3', subject) > 0;

匹配多個(gè)(包含1跟3)執(zhí)行結(jié)果

查出了subject包含1跟3的學(xué)生信息

解決方案二

使用REGEXP正則表達(dá)式匹配,REGEXP語法更加強(qiáng)大,功能更全,可以根據(jù)不同的需求選擇不同的用法,本文主要講查詢包含這個(gè)字符的數(shù)據(jù)

匹配單個(gè)(只包含1)sql語句如下

SELECT
	* 
FROM
	`stu_c` 
WHERE
	CONCAT ( ',', subject, ',' ) REGEXP ',(1),'

匹配單個(gè)(只包含1)執(zhí)行結(jié)果

查出了subject包含1的學(xué)生信息

匹配多個(gè)(包含1跟3)sql語句如下

SELECT
	* 
FROM
	`stu_c` 
WHERE
	CONCAT ( ',', subject, ',' ) REGEXP ',(1|3),'

匹配多個(gè)(包含1跟3)執(zhí)行結(jié)果

查出了subject包含1跟3的學(xué)生信息

總結(jié)

兩種方式都能解決匹配數(shù)組字段中某一個(gè)具體值的問題,但是也有差異,有各自的優(yōu)缺點(diǎn),例如FIND_IN_SET(str,fieldName)函數(shù),如果前端頁面是多選項(xiàng),也就是需要匹配滿足多個(gè)值的情況,就需要使用or拼接sql,但是REGEXP只需要把參數(shù)轉(zhuǎn)換為我們需要的格式(',(1|3),')即可。

如果項(xiàng)目需求只需匹配一個(gè)值,F(xiàn)IND_IN_SET函數(shù)直接在xml中使用就行,REGEXP仍需要將單個(gè)參數(shù)轉(zhuǎn)換為特定的格式(,(1),)。

綜上所述,單個(gè)值匹配建議用FIND_IN_SET函數(shù),多個(gè)值匹配建議用REGEXP正則表達(dá)式。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • mysql 模糊查詢 concat()的用法詳解

    mysql 模糊查詢 concat()的用法詳解

    大家都知道concat()函數(shù),是用來連接字符串,今天通過本文給大家介紹mysql 模糊查詢 concat()及concat的用法,感興趣的朋友跟隨小編一起看看吧
    2023-02-02
  • mysql?復(fù)制行數(shù)據(jù)命令經(jīng)驗(yàn)分享(Mysql?復(fù)制一條數(shù)據(jù))

    mysql?復(fù)制行數(shù)據(jù)命令經(jīng)驗(yàn)分享(Mysql?復(fù)制一條數(shù)據(jù))

    有時(shí)候表里有一行已經(jīng)添加好的數(shù)據(jù),想要多復(fù)制幾百條用來測試比如要分頁測試等,需要多條數(shù)據(jù),但是有時(shí)候數(shù)據(jù)表字段太多了,有幾十個(gè),一個(gè)一個(gè)手寫那是不可能的
    2023-09-09
  • mysql insert if not exists防止插入重復(fù)記錄的方法

    mysql insert if not exists防止插入重復(fù)記錄的方法

    在 MySQL 中,插入(insert)一條記錄很簡單,但是一些特殊應(yīng)用,在插入記錄前,需要檢查這條記錄是否已經(jīng)存在,只有當(dāng)記錄不存在時(shí)才執(zhí)行插入操作,本文介紹的就是這個(gè)問題的解決方案。
    2011-04-04
  • 出現(xiàn)錯(cuò)誤mysql Table ''performance_schema...解決辦法

    出現(xiàn)錯(cuò)誤mysql Table ''performance_schema...解決辦法

    這篇文章主要介紹了解決出現(xiàn)錯(cuò)誤mysql Table 'performance_schema.session_variables' doesn't exist的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • 本地windows安裝兩個(gè)mysql服務(wù)器,配置主從同步

    本地windows安裝兩個(gè)mysql服務(wù)器,配置主從同步

    大型網(wǎng)站為了緩解大量的并發(fā)訪問,除了在網(wǎng)站實(shí)現(xiàn)分布式負(fù)載均衡,還會(huì)搭建服務(wù)器mysql集群技術(shù),來分擔(dān)主數(shù)據(jù)庫的壓力。在本地電腦能實(shí)現(xiàn)這樣的技術(shù)嗎,本地windows安裝兩個(gè)mysql服務(wù)器,配置主從同步也是可以實(shí)現(xiàn)的,快來跟著教程測試一下吧。
    2022-12-12
  • 值得收藏的mysql常用命令集錦

    值得收藏的mysql常用命令集錦

    這篇文章主要為大家整理了mysql常用命令匯總,連接Mysql、修改mysql密碼、數(shù)據(jù)庫的創(chuàng)建刪除等,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • SQL實(shí)現(xiàn)LeetCode(184.系里最高薪水)

    SQL實(shí)現(xiàn)LeetCode(184.系里最高薪水)

    這篇文章主要介紹了SQL實(shí)現(xiàn)LeetCode(184.系里最高薪水),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 關(guān)于SQL?Update的四種常見寫法

    關(guān)于SQL?Update的四種常見寫法

    這篇文章主要介紹了關(guān)于SQL?Update的四種常見寫法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • M1芯片安裝mysql8.0數(shù)據(jù)庫的實(shí)現(xiàn)步驟(圖文)

    M1芯片安裝mysql8.0數(shù)據(jù)庫的實(shí)現(xiàn)步驟(圖文)

    這篇文章主要介紹了M1芯片安裝mysql8.0數(shù)據(jù)庫的實(shí)現(xiàn)實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • MySQL學(xué)習(xí)之索引及優(yōu)化

    MySQL學(xué)習(xí)之索引及優(yōu)化

    這篇文章主要介紹MySQL的索引及優(yōu)化,索引是幫助MySQL進(jìn)行高效查詢的一種數(shù)據(jù)結(jié)構(gòu)。好比一本書的目錄,能加快查詢的速度,想進(jìn)一步了解的小伙伴可以詳細(xì)閱讀本文
    2023-03-03

最新評論