久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

SQL查詢之字段是逗號分隔開的數組怎么查詢匹配數據

157次閱讀
沒有評論

共計 1644 個字符,預計需要花費 5 分鐘才能閱讀完成。

這篇文章主要介紹“SQL 查詢之字段是逗號分隔開的數組怎么查詢匹配數據”,在日常操作中,相信很多人在 SQL 查詢之字段是逗號分隔開的數組怎么查詢匹配數據問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”SQL 查詢之字段是逗號分隔開的數組怎么查詢匹配數據”的疑惑有所幫助!接下來,請跟著丸趣 TV 小編一起來學習吧!

字段是逗號分隔開的數組如何查詢匹配數據方式一:CHARINDEX***()*****

SELECT
 * 
 U_PUR1 
WHERE
 CHARINDEX(  ,  +  100306  +  , ,  ,  + DeptCode +  ,  )  0

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

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

方式二:WHERE LIKE

SELECT
 * 
 U_PUR1 
WHERE
  ,  + DeptCode +  ,  LIKE  %,  +  100306  +  ,%

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

Mysql 逗號分隔的字段查詢

在工作中,經常會遇到一對多的關系,比如用戶和愛好。想要在 mysql 中保存這種關系,一般有兩種方式,一種是建立一張用戶愛好表 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 以內,那么這么處理完全是可以的,但是一旦超過了 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 提供的強大的正則匹配方式。上面的 sql 就可以改寫成:

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

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

到此,關于“SQL 查詢之字段是逗號分隔開的數組怎么查詢匹配數據”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注丸趣 TV 網站,丸趣 TV 小編會繼續努力為大家帶來更多實用的文章!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-13發表,共計1644字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 定南县| 襄汾县| 安泽县| 卢龙县| 贺兰县| 温泉县| 台东县| 防城港市| 安顺市| 梧州市| 潢川县| 绩溪县| 丹阳市| 突泉县| 石屏县| 鹰潭市| 呼图壁县| 嘉祥县| 沁水县| 龙岩市| 玉溪市| 西乡县| 新沂市| 巩义市| 个旧市| 琼结县| 米易县| 南木林县| 塘沽区| 昆山市| 富锦市| 石家庄市| 灵石县| 天峻县| 大邑县| 合肥市| 张家川| 珠海市| 本溪市| 比如县| 章丘市|