选择WHERE子句,拆分列值并检查

时间:2013-05-14 04:55:23

标签: mysql sql

我有以下表格架构

id   name     type
1    ABC      1,2,3,4
2    PQR      2,3,5 
3    XYZ      1,4
4    TCS      3,1
5    PPP      2,3

这里我想得到如下的显示,即类型为1和4 结果: -

id   name     type
1    ABC      1,2,3,4
3    XYZ      1,4
4    TCS      3,1

3 个答案:

答案 0 :(得分:5)

您可以使用FIND_IN_SET()功能:

  

如果字符串 str 在字符串列表中,则返回1到 N 范围内的值 strlist 由N个子串组成。字符串列表是由子串组成的字符串,由“,”字符分隔   如果 str 不在 strlist 返回0 > strlist 是空字符串。

SELECT * FROM Table1
WHERE
     FIND_IN_SET(1, type)
  OR FIND_IN_SET(4, type)

输出:

╔════╦══════╦═════════╗
║ ID ║ NAME ║  TYPE   ║
╠════╬══════╬═════════╣
║  1 ║ ABC  ║ 1,2,3,4 ║
║  3 ║ XYZ  ║ 1,4     ║
║  4 ║ TCS  ║ 3,1     ║
╚════╩══════╩═════════╝

See this SQLFiddle

SQLFiddle with more data

答案 1 :(得分:0)

尝试检查所有条件,例如

select * from table where
type like '1' OR type like '4' 
OR type like '1,%' OR type like '4,%' 
OR type like '%,1' OR type like '%,4' 
OR type like '%,1,%' OR type like '%,4,%'

答案 2 :(得分:-2)

SELECT * FROM user_master WHERE TYPE LIKE'%4%'或TYPE LIKE'%1%'