我有一個數據庫表格,其值存儲在value1,value2,value3,value4
格式中。 我想查找該字段包含定義值的所有行,例如。 value3
。如何使用逗號分隔值在字段上設置'where'子句?
如何執行查詢以在像這樣的字段中搜索值?
我有一個數據庫表格,其值存儲在value1,value2,value3,value4
格式中。 我想查找該字段包含定義值的所有行,例如。 value3
。如何使用逗號分隔值在字段上設置'where'子句?
如何執行查詢以在像這樣的字段中搜索值?
使用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。
可以使用like
做到這一點:
where concat(',', field, ',') like '%,value3,%'
如果你存儲你的數據正確標準化,很容易。當你像這樣儲存它時,它會更難,不是! –