CASE zip LIKE MySQL

时间:2012-05-17 19:45:00

标签: mysql

我正在创建一个“简单”的搜索查询。如果指定的列LIKE('test'),我想选择一个值为1的列,这很难解释。

我想做的就像这样

SELECT *,(CASE mycol LIKE('%test%') as match THEN 1 END) FROM mytable

所以如果mycol匹配条件,那么match = 1,if else 0.我怎么做?对不起,如果难以理解。

2 个答案:

答案 0 :(得分:2)

你快到了,但是你犯了四个错误并且使用了一个不好的做法:

  • 在CASE表达式中添加ELSE 0
  • CASE表达式需要一个或多个WHEN表达式。
  • 将别名放在正确的位置 - 在表达式结束后。
  • 请勿使用reserved word match作为别名。

另外,请勿使用SELECT *

试试这个:

SELECT
    col1,
    col2,
    ...,
    coln,
    CASE WHEN mycol LIKE '%test%' THEN 1 ELSE 0 END AS zipmatches
FROM mytable

然而,在MySQL中不需要CASE表达式,因为TRUE和1是等价的:

SELECT
    col1,
    col2,
    ...,
    coln,
    mycol LIKE '%test%' AS zipmatches
FROM mytable

答案 1 :(得分:1)

这是另一个表达式

SELECT *, IF(mycol LIKE('%test%'),1,0) is_a_match FROM mytable;