(mysql)怎樣判斷一個數字變數是否包含在表的一個欄位中,並列出包含該變數的表中所有資料.該如何處理
來源:互聯網
上載者:User
(mysql)怎樣判斷一個數字變數是否包含在表的一個欄位中,並列出包含該變數的表中所有資料.
如表table 包含以下欄位
id csite ....
1 1,2,13 ....
2 2,3,4 ....
3 1,4,5 ....
4 2,5,23 ....
5 1,3,8 ....
假設取得一個數字變數3,怎樣列出包含數字3的所有資料行
使用select id,csite from table where csite like '%3%' or csite like '%3,%' or csite like '%,3,%' or csite like '%,3%'
這樣行不通,會把13,23的也查出來
想要的結果是:
id csite ....
2 2,3,4 ....
5 1,3,8 ....
查過一些資料,用這個charindex(3,csite)>0試了不管用,該怎麼辦??
不要太複雜sql語句和預存程序
謝謝!!!!!
------解決方案--------------------
可以使用MySQL自己的函數FIND_IN_SET
FIND_IN_SET(str,strlist)
Returns a value 如果字串 str 在由 N 個子串組成的列表 strlist 中,返回一個 1 到 N 的值。一個字串列表是由通過字元 “,” 分隔的多個子串組成。如果第一個參數是一個常數字串,並且第二個參數是一個 SET 列類型,FIND_IN_SET() 函數將被最佳化為使用位元運算!如果 str 在不 strlist 中或者如果 strlist 是一個空串,傳回值為 0。如果任何一個參數為 NULL,傳回值也是 NULL。如果第一個參數包含一個 “,”,這個函數將完全不能工作:
mysql> SELECT FIND_IN_SET('b','a,b,c,d');
-> 2