2012-01-04 65 views
1

我有一個包含逗號分隔值的VARCHAR列,我想知道在這些逗號分隔值內是否可以匹配一個數字?MySQL列IN

一樣,我想有一個行:

id | numbers 
1 | 1,2,4,5 
2 | 2,3,4,6 

,我想所有的行與在列表中的號碼2相匹配。

回答

5

看看FIND_IN_SET函數。

SELECT * 
    FROM YourTable 
    WHERE FIND_IN_SET('2', numbers) <> 0 
+0

所以基本上可以做'選擇FIND_IN_SET(3,測試.test)> 0 FROM test'? – Manhim 2012-01-04 19:42:10

+0

@Manhim你的語法有點不合適。看看我的答案中的代碼示例。 – 2012-01-04 19:43:08

+0

'SELECT FIND_IN_SET('3',numbers)<> 0 FROM test'?似乎工作:) – Manhim 2012-01-04 19:51:05

1

跨數據庫的一個版本移植是:

where numbers = '2' 
    or numbers like '2,%' 
    or numbers like '%,2,%' 
    or numbers like '%,2' 
1

這不是很有效的,但在這裏是如何:我

SELECT * 
FROM table 
WHERE numbers LIKE '2,%' 
    OR numbers LIKE '%,2,%' 
    OR numbers LIKE '%,2' 
    OR numbers = '2';