我正在创建一个“简单”的搜索查询。如果指定列 LIKE('test'),我想选择一个值为 1 的列,这有点难以解释。
我想做的是这样
SELECT *,(CASE mycol LIKE('%test%') as match THEN 1 END) FROM mytable
因此,如果 mycol 符合条件,则 match=1,否则为 0。我该怎么做?对不起,如果难以理解。
我正在创建一个“简单”的搜索查询。如果指定列 LIKE('test'),我想选择一个值为 1 的列,这有点难以解释。
我想做的是这样
SELECT *,(CASE mycol LIKE('%test%') as match THEN 1 END) FROM mytable
因此,如果 mycol 符合条件,则 match=1,否则为 0。我该怎么做?对不起,如果难以理解。
您快到了,但是您犯了四个错误并使用了一种不好的做法:
ELSE 0
您的 CASE 表达式。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
这是另一种表达方式
SELECT *, IF(mycol LIKE('%test%'),1,0) is_a_match FROM mytable;