在mysql中如果我的數(shù)據(jù)存儲(chǔ)是以(‘產(chǎn)品2′,’2,4,7′)這種格式的我們?nèi)绻褂胕n可能有問(wèn)題用like也不行,唯獨(dú)使用find_in_set才比較精確了.
在使用織夢(mèng)DEDECMS時(shí),開(kāi)啟了織夢(mèng)的主欄目、副欄目功能,而副欄目字段在mysql數(shù)據(jù)庫(kù)中typeid2是以逗號(hào),分隔欄目id組成字符串,需查詢副欄目文章時(shí),心情天空就需要下面的兩個(gè)方法解決.
測(cè)試mysql 數(shù)據(jù)表 其中一個(gè)模型數(shù)據(jù),代碼如下:
- INSERT INTO test(pname,pnum) VALUES(‘產(chǎn)品1′,’1,2,4′);
- INSERT INTO test(pname,pnum) VALUES(‘產(chǎn)品2′,’2,4,7′);
- INSERT INTO test(pname,pnum) VALUES(‘產(chǎn)品3′,’3,4′);
- INSERT INTO test(pname,pnum) VALUES(‘產(chǎn)品4′,’1,7,8,9′);
- INSERT INTO test(pname,pnum) VALUES(‘產(chǎn)品5′,’33,4′); --Vevb.com
方法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()函數(shù)返回的所在的位置,如果不存在就返回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′);
新聞熱點(diǎn)
疑難解答
圖片精選