萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> mysql find_in_set或REGEXP查詢字段中指定字符內容

mysql find_in_set或REGEXP查詢字段中指定字符內容

在mysql中如果我的數據存儲是以(‘產品2′,’2,4,7′)這種格式的我們如果使用in可能有問題用like也不行,唯獨使用find_in_set才比較精確了。


在使用織夢DEDECMS時,開啟了織夢的主欄目、副欄目功能。而副欄目字段在mysql數據庫中typeid2是以逗號,分隔欄目id組成字符串。需查詢副欄目文章時,心情天空就需要下面的兩個方法解決。

測試mysql 數據表 其中一個模型數據

 代碼如下 復制代碼

INSERT INTO test(pname,pnum) VALUES(‘產品1′,’1,2,4′);
INSERT INTO test(pname,pnum) VALUES(‘產品2′,’2,4,7′);
INSERT INTO test(pname,pnum) VALUES(‘產品3′,’3,4′);
INSERT INTO test(pname,pnum) VALUES(‘產品4′,’1,7,8,9′);
INSERT INTO test(pname,pnum) VALUES(‘產品5′,’33,4′);

方法1、

 代碼如下 復制代碼

SELECT * FROM test WHERE find_in_set(’3′,pnum) OR find_in_set(’9′,pnum);

方法2、

 代碼如下 復制代碼

SELECT * FROM test WHERE pnum REGEXP ‘(3|9)’;

—————————————————-

PASS:記錄

find_in_set()函數返回的所在的位置,如果不存在就返回0

 代碼如下 復制代碼 SELECT find_in_set(‘e’,'h,e,l,l,o’);

用in的效果不是很好

 代碼如下 復制代碼

SELECT * FROM TEST WHERE id in(4,2,3);

如果想要按照ID為4,2,3這樣排序呢?

 代碼如下 復制代碼 SELECT * FROM TEST WHERE id in(4,2,3) ORDER BY find_in_set(id,’4,2,3′);
copyright © 萬盛學電腦網 all rights reserved