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

SQL查詢之字段是逗號分隔開的數(shù)組如何查詢匹配數(shù)據(jù)問題

 更新時間:2023年03月06日 10:34:01   作者:江城撅嘴的川羌  
這篇文章主要介紹了SQL查詢之字段是逗號分隔開的數(shù)組如何查詢匹配數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

字段是逗號分隔開的數(shù)組如何查詢匹配數(shù)據(jù)

方式一:CHARINDEX***()*****

SELECT
?? ?*?
FROM
?? ?U_PUR1?
WHERE
?? ?CHARINDEX( ',' + '100306' + ',', ',' + DeptCode + ',' ) >0

匹配字符串開始位置的函數(shù) CHARINDEX(str1,str,[start])

CHARINDEX(str1,str,[start]) 函數(shù)返回子字符串 str1 在字符串 str 中的開始位置,start 為搜索的開始位置,如果指定 start 參數(shù),則從指定位置開始搜索;如果不指定 start 參數(shù)或者指定為0或者負(fù)值,則從字符串開始位置搜索。

方式二:WHERE LIKE

SELECT
?? ?*?
FROM
?? ?U_PUR1?
WHERE
?? ?',' + DeptCode + ',' LIKE '%,' + '100306' + ',%';

Where Like 的方式顯然更好理解一些,首先在字段收尾加上逗號,這樣可以使得字段中每一個值都擁有完整的格式,再使用Like進(jìn)行模糊匹配時,可以使首尾的值都能匹配到。

Mysql逗號分隔的字段查詢

在工作中,經(jīng)常會遇到一對多的關(guān)系,比如用戶和愛好。想要在mysql中保存這種關(guān)系,一般有兩種方式,一種是建立一張用戶愛好表user_hobby(user_id, hobby_id),這樣一條user_id就會存在多條記錄。

或者采用第二種方式,直接在用戶表中增加hobby_ids字段,將hobby_id拼接成用逗號分隔的字符串保存起來。

那么問題來了,如果采用第二種方式的話,查詢的時候要如何處理呢?下面介紹幾種常見的處理方式。

1.like

可能最新想到的是采用like的形式,如下:

select * from user where hobby_ids like '%1%';

這種方式是否可行呢? 行,但是有適用范圍,如果hobby_id在10以內(nèi),那么這么處理完全是可以的,但是一旦超過了10,那'%1%'就會把10,11,這些帶1的id全都匹配處理。

2.find_in_set

為了解決like存在的問題,還可以使用mysql提供的find_in_set(str, strlist),sql可以這樣寫:

select * from user where find_in_set('1', hobby_ids);

這樣mysql就會把hobby_ids的值,按照逗號分隔的一個個元素去匹配。如果我們要匹配多個值要怎么辦呢,比如查找喜歡1-籃球或2-足球的用戶,可以

select * from user where find_in_set('1', hobby_ids) or find_in_set('2', hobby_ids);?

如果匹配的值較多,我們可能要拼很長的sql,那有沒有稍微簡短的方式呢,我們可以采用下面的方式。

3.regexp

regexp是mysql提供的強(qiáng)大的正則匹配方式。上面的sql就可以改寫成:

select * from user where hobby_ids regexp '(^|,)(1|2)(,|$)';

這里是完全采用字符串正則匹配的方式,(1|2)表示匹配1或者2,(^|,)表示數(shù)字前面必須是字符串開頭或者是一個逗號,(,|$)表示數(shù)字后面必須是逗號或者字符串的結(jié)尾。這樣就可以完整匹配逗號分隔的元素了。

總結(jié)

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

相關(guān)文章

  • MySQL 觸發(fā)器的基礎(chǔ)操作(六)

    MySQL 觸發(fā)器的基礎(chǔ)操作(六)

    這篇文章主要為大家詳細(xì)介紹了MySQL 觸發(fā)器的基礎(chǔ)操作,告訴大家什么是MySQL觸發(fā)器,如何查看觸發(fā)器,感興趣的小伙伴們可以參考一下
    2016-08-08
  • centOS7安裝MySQL數(shù)據(jù)庫

    centOS7安裝MySQL數(shù)據(jù)庫

    本文給大家簡單介紹了如何在centOS7下安裝MySQL5.6數(shù)據(jù)庫的方法,以及一些注意事項,希望對大家實用mysql能夠有所幫助
    2016-12-12
  • mysql5.7.14解壓版的安裝圖文教程

    mysql5.7.14解壓版的安裝圖文教程

    MySQL的安裝有兩種方式,一種為msi格式,一個是zip格式。這篇文章主要介紹了mysql5.7.14解壓版的安裝圖文教程,需要的朋友可以參考下
    2017-05-05
  • MySQL 5.7開啟并查看biglog的詳細(xì)教程

    MySQL 5.7開啟并查看biglog的詳細(xì)教程

    binlog 就是binary log,二進(jìn)制日志文件,這個文件記錄了MySQL所有的DML操作,通過binlog日志我們可以做數(shù)據(jù)恢復(fù),增量備份,主主復(fù)制和主從復(fù)制等等,本文給大家介紹了MySQL 5.7開啟并查看biglog的詳細(xì)教程,需要的朋友可以參考下
    2024-03-03
  • Jaspersoft?Studio添加mysql數(shù)據(jù)庫配置步驟

    Jaspersoft?Studio添加mysql數(shù)據(jù)庫配置步驟

    這篇文章主要為大家介紹了Jaspersoft?Studio添加mysql數(shù)據(jù)庫配置的步驟過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-02-02
  • MySQL高級操作指令匯總

    MySQL高級操作指令匯總

    本文給大家?guī)淼氖荕ySQL高級操作指令代碼,羅列的很詳細(xì)并且附帶有例子,對大家的學(xué)習(xí)將會很有用,建議收藏以防丟失,需要的朋友可以參考下
    2022-01-01
  • mysql 時間戳的用法

    mysql 時間戳的用法

    這篇文章主要介紹了mysql 時間戳的用法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • MySQL多表操作的外鍵約束教程

    MySQL多表操作的外鍵約束教程

    MySQL多表之間的關(guān)系可以概括為:一對一、一對多/多對一關(guān)系,多對多,這篇文章主要介紹了MySQL多表操作的外鍵約束,需要的朋友可以參考下
    2023-01-01
  • 調(diào)用MySQL中數(shù)據(jù)庫元數(shù)據(jù)的方法

    調(diào)用MySQL中數(shù)據(jù)庫元數(shù)據(jù)的方法

    這篇文章主要介紹了調(diào)用MySQL中數(shù)據(jù)庫元數(shù)據(jù)的方法,文中給出了了PHP和Perl腳本下的調(diào)用示例,需要的朋友可以參考下
    2015-05-05
  • MySQL中update語法的使用記錄

    MySQL中update語法的使用記錄

    在MySQL中,UPDATE?語句用于修改已存在的表中的記錄,下面通過示例介紹MySQL中update語法的使用記錄,感興趣的朋友一起看看吧
    2024-07-07

最新評論