1

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

我想做的是这样

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

因此,如果 mycol 符合条件,则 match=1,否则为 0。我该怎么做?对不起,如果难以理解。

4

2 回答 2

2

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

  • 添加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
于 2012-05-17T19:46:34.387 回答
1

这是另一种表达方式

SELECT *, IF(mycol LIKE('%test%'),1,0) is_a_match FROM mytable;
于 2012-05-17T21:28:42.793 回答