2013-03-30 25 views
0

我有一個數據庫表格,其值存儲在value1,value2,value3,value4格式中。 我想查找該字段包含定義值的所有行,例如。 value3如何使用逗號分隔值在字段上設置'where'子句?

如何執行查詢以在像這樣的字段中搜索值?

+1

如果你存儲你的數據正確標準化,很容易。當你像這樣儲存它時,它會更難,不是! –

回答

5

使用FIND_IN_SET()

SELECT * 
FROM tableName 
WHERE FIND_IN_SET('value3', 'comma separated value here') > 0 

SOURCE

從MySQL文檔210

描述:

如果字符串str在由N子串的 字符串列表strlist返回的1到N的範圍內的值。字符串列表是一個 字符串,由以「,」字符分隔的子字符串組成。如果 第一個參數是一個常量字符串,第二個參數是類型爲 SET的列,則FIND_IN_SET()函數將優化爲使用位算術。 如果str不在strlist中,或者strlist是空字符串,則返回0。 如果任一參數爲NULL,則返回NULL。

0

可以使用like做到這一點:

where concat(',', field, ',') like '%,value3,%' 
相關問題