我有一個包含逗號分隔值的VARCHAR
列,我想知道在這些逗號分隔值內是否可以匹配一個數字?MySQL列IN
一樣,我想有一個行:
id | numbers
1 | 1,2,4,5
2 | 2,3,4,6
,我想所有的行與在列表中的號碼2相匹配。
我有一個包含逗號分隔值的VARCHAR
列,我想知道在這些逗號分隔值內是否可以匹配一個數字?MySQL列IN
一樣,我想有一個行:
id | numbers
1 | 1,2,4,5
2 | 2,3,4,6
,我想所有的行與在列表中的號碼2相匹配。
看看FIND_IN_SET函數。
SELECT *
FROM YourTable
WHERE FIND_IN_SET('2', numbers) <> 0
跨數據庫的一個版本移植是:
where numbers = '2'
or numbers like '2,%'
or numbers like '%,2,%'
or numbers like '%,2'
這不是很有效的,但在這裏是如何:我
SELECT *
FROM table
WHERE numbers LIKE '2,%'
OR numbers LIKE '%,2,%'
OR numbers LIKE '%,2'
OR numbers = '2';
所以基本上可以做'選擇FIND_IN_SET(3,測試.test)> 0 FROM test'? – Manhim 2012-01-04 19:42:10
@Manhim你的語法有點不合適。看看我的答案中的代碼示例。 – 2012-01-04 19:43:08
'SELECT FIND_IN_SET('3',numbers)<> 0 FROM test'?似乎工作:) – Manhim 2012-01-04 19:51:05