2013-04-29 76 views
1

我有問題在字段中搜索記錄中的密鑰。在字段中查找密鑰(數字) - Mysql

  • disProdlist = containt 1個或多個鍵,exp(1,2,3,9,等等)。

我喜歡在「disProdlist」字段中顯示記錄哪個記錄包含鍵「9」。

這裏是我的查詢:

SELECT disProdName FROM discount WHERE FIND_IN_SET('9','disProdlist'); 

但是,它不返回任何結果。

因此,我嘗試了一個實驗,我嘗試將「disProdlist」更改爲只有一個密鑰,併成功返回結果。但是,我想讓「disprodlist」包含更多的一個鍵。

那麼,有人可以幫我解決我的問題嗎?

+0

這是不是工作' SELECT disProdName FROM折扣WHERE'disProdlist'LIKE'%9%;'? 順便說一句,對於大型記錄集,「LIKE」可能非常慢。 – 2013-04-29 10:13:54

+0

不,你會得到像'3,19,27'這樣的值的記錄,那不是你正在尋找的記錄 – 2013-04-29 10:24:17

+0

'disProdlist'是一個字符串。 'disprodlist'是一列。 – Strawberry 2013-04-29 10:45:22

回答

1

試試這個

SELECT disProdName FROM discount WHERE FIND_IN_SET('9','1,2,3,9,..and so on'); 

SELECT disProdName FROM discount WHERE FIND_IN_SET('9',disProdlist); 

如果disProdlist其列

HERE A DEMO

1

如果disProdList是一個字段的名稱,你不應該把它放在在你單引號之間查詢。

SELECT disProdName FROM discount WHERE FIND_IN_SET('9','disProdlist'); 

該要求不正確。第二個參數必須是一個字符串列表(由doc所述的由「,」字符分隔的子字符串組成的字符串)。

正確的查詢則是:

SELECT disProdName FROM discount WHERE FIND_IN_SET('9',disProdlist); 

提供disProdlist要麼是正確的格式或類型的字符串(VARCHAR,TEXT,...)SET