1

「単純な」検索クエリを作成しています。指定された列がLIKE('test')の場合、値1を持つ必要がある列を選択したいのですが、説明するのは難しいです。

私がやりたいのはこんな感じ

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

したがって、mycolが条件に一致する場合、match = 1、それ以外の場合は0です。どうすればよいですか?わかりづらい場合は申し訳ありません。

4

2 に答える 2

2

あなたはもうすぐそこにいますが、4つのエラーを犯し、1つの悪い習慣を使用しました。

  • ELSE 0CASE式を追加します。
  • CASE式には1つ以上の式が必要WHENです。
  • 式の終了後、エイリアスを正しい場所に配置します。
  • 予約語 matchをエイリアスとして使用しないでください。

また、は使用しないでくださいSELECT *

これを試して:

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

ただし、TRUEと1は同等であるため、MySQLではCASE式は必要ありません。

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 に答える