「単純な」検索クエリを作成しています。指定された列が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です。どうすればよいですか?わかりづらい場合は申し訳ありません。
あなたはもうすぐそこにいますが、4つのエラーを犯し、1つの悪い習慣を使用しました。
ELSE 0
CASE式を追加します。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
これが別の表現です
SELECT *, IF(mycol LIKE('%test%'),1,0) is_a_match FROM mytable;