1. 程式人生 > >MYSQL 查詢某欄位中包含以逗號分隔的字串的記錄方法

MYSQL 查詢某欄位中包含以逗號分隔的字串的記錄方法

表中有個欄位是以逗號間隔儲存的

mineral

idmineral
11,4,32
21,2

要根據mineral查詢這個表的資料

怎麼查詢呢

select * from xxx where find_in_set(2,mineral);

查詢結果是 :

idmineral
21,2

那麼 find_in_set是一個什麼函式呢?

MySQL提供了一個名為find_in_set()的內建函式,執行在逗號間隔的字串列表中查詢指定字串的位置。

find_in_set(needle,haystack);

find_in_set()函式接受兩個引數:

第一個引數needle是要查詢的字串。

第二個引數haystack是要搜尋的逗號間隔字串列表。

find_in_set(0函式根據引數的值返回一個整數或一個NULL值:

如果needle或haystack為null,則函式返回null值。

如果needle不在haystack中,或者haystack是空字串,則返回零。

如果needle在haystack中,則返回一個needle在haystack中的位置。

請注意,如果needle包含逗號(,),該函式將無法正常工作。此外,如果needle是一個常量字串,而且naystack是一個型別為set的列,mySQL將使用位算算術優化。


相關推薦

MYSQL 查詢包含逗號分隔字串記錄方法

表中有個欄位是以逗號間隔儲存的mineralidmineral11,4,3221,2要根據mineral查詢這個表的資料怎麼查詢呢select * from xxx where find_in_set(2,mineral);查詢結果是 :idmineral21,2那麼 fin

sql語句查詢包含指定字串的資料列表,完全匹配逗號中間的字串資料

查詢出,使用者表中name欄位完全包含小明的資料資訊 User表 id name userInfo 1 小明,明明 很帥 2 小明,李明 3 明天,李強 SELECT * FROM `User` where concat(',

mysql查詢的多條結果展示成按逗號隔開

mysql查詢某欄位的多條結果顯示成按逗號隔開有表:tel欄位:id tel 1 13578945620 2 13578945621 3 13578945622 4 13578945623 5 13578945624查詢tel欄位,出現的結果是這樣的:13578945620

Mysql查詢包含字串記錄

1.正確的方式: 判斷欄位field_A中是否包含23: select * from table_test where FIND_IN_SET("23", field_A) ; 2.錯誤的方式

MYSQL查詢字段逗號分隔的字符串的方法

into create style lan ive primary div ble tle 首先我們建立一張帶有逗號分隔的字符串。 CREATE TABLE test(id int(6) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id),p

MySQL將一個逗號分隔的取出來形成新的

1例如:要把如圖1的欄位拆分圖2 select account_id, substring_index(substring_index(a.related_shop_ids,',' ,b.help_topic_id+1),',',-1) shopid

mysql 關於去重查詢

 使用distinct 和 group by 對於查詢多欄位,而只對一個欄位去重是查不到正確值得,因為distinct 後面跟多欄位,mysql會對只有這些子對完全重複才能去重,而group by 查詢的欄位也只能在 group 

MySQL 模糊查詢逗號隔開

1. 查詢pnum欄位中包含3或者9的記錄 SELECT * FROM test WHERE find_in_set('3',pnum) OR find_in_set('9',pnum); SELECT * FROM test WHERE CONCAT(',',pnum,'

oracle 查詢字串是否包含字串

有一個欄位TEL型別varchar2(1000),存放格式為 電話,電話,...的格式,注意最後一個電話結束後沒有逗號, 並且電話不重複,我想找在表中所有tel欄位包含 a電話的記錄,如何寫sql語句? select rid from tdc_restaurant whe

mysql包含關鍵字如何轉義

INSERT INTO tb_system_help2(sysid,sysname,helpid,helpname,parentid,isLeaf,`order`) VALUES(?,?,?,?,?,?,?)改成 `order` ,注意是數字鍵1旁邊的反引號`  而 不是'

Oracle查詢不為空或者為空的SQL語句怎麼寫

比如 insert into table a (a1,b1)values("a1",''); 對於這種情況,因為表裡存的是”,其實是沒有內容的,要查詢這個欄位,不能直接使用 select * from a where b1=''; sql中判斷非

oracle,查詢某個字元出現的次數

SELECT LENGTHB(TRANSLATE('1,2,34,5',',12345',',')) FROM DUAL;SELECT LENGTHB('1,2,34,5')-LENGTHB(REPL

Mysql查詢某個出現的次數並按倒序排列

問題:mysql資料庫表名address,查詢城市city欄位出現的次數並按倒序排列   查詢語句 select city,count(*) from address group by city order by count(*)  desc 執行結果如圖,按查詢欄位(城

MySQL判斷一個包含中文

中文=2個位元組,英文或數字=1個位元組,因此我們用mysql中兩個函式比較位元組和字元的長度是否相等來判斷是否包含中文   select * from user where CHAR_LENGTH(name)=LENGTH(name)   如果想過濾掉空字串或限制下長度

Mysql replace替換的指定字串

replace用法:replace("欄位名","原字串","替代後的字串") 用法示例:替換expand_url中https為http 原資料: 為了識別率更高加上冒號 update jianjie_task_list_tg set expand_url = replac

MySql 查詢同一多個結果合併到一行顯示 GROUP_CONCAT

先直接給出程式碼: SELECT GROUP_CONCAT(tag) as tags FROM table_tag tt WHERE tt.id in ('1','2') 我們實現合併一個欄位的多個結果用到了mysql 函式 GROUP_CONCAT,

oracle利用分析函式row_number()over()查詢一張表所有並按照其中部分分組查詢最大值

先準備資料: deptid :部門id. parent_deptid :deptid 的父級部門,也就是depid 是他的子部門。 create table test_employee (empid int ,deptid int ,parent_deptid int,sa

資料庫一個表的內容匯入到另一個數據庫表的

示例:insert into user (name)select namefrom A.dbo.user例項:匯入會員表:(member_info,要匯入的目標表,shualodb.dbo.KS_User,hualodb(另個數據庫)的源表)insert member_info(memberId,member

mysql 查詢某個資訊,由多個id逗號隔開拼裝成

select a.SUPPLIER_USER_ID,GROUP_CONCAT(d.ITEM_NAME) AS countyName from p_supplier_user a LEFT JOIN t

SQL語句不通過子查詢最大的那一條記錄

直接用一個例子來解釋吧,我們要取賬戶表中取最新餘額,也就是取user_acct中每個user_id的pt_d最大的那條記錄的acct_bal表結構和資料如下mysql>  select * from user_acct;+---------+----------+---