我正在创建一个“简单”的搜索查询。如果指定的列LIKE('test'),我想选择一个值为1的列,这很难解释。
我想做的就像这样
SELECT *,(CASE mycol LIKE('%test%') as match THEN 1 END) FROM mytable
所以如果mycol匹配条件,那么match = 1,if else 0.我怎么做?对不起,如果难以理解。
答案 0 :(得分:2)
你快到了,但是你犯了四个错误并且使用了一个不好的做法:
ELSE 0
。CASE
表达式需要一个或多个WHEN
表达式。 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;