11

MySQL WHERE ステートメントで IF...ELSE 関数を使用しようとしていますが、成功しません。

私はこのクエリを持っています:

SELECT id 
FROM mytable 
WHERE restrcountry NOT LIKE '%*nl*%' 
  AND (IF languages LIKE '%*nl*%', 1, 0) = 1;

わかりました、これは IF ステートメントを使用したクエリです。

ただし、「ELSE」も使用するにはどうすればよいですか?

例、私は似たようなことをしたいと思います:

IF language match nl ---> language がnlの ID フィールドを選択

ELSE IF language NOT match nl ---> language がenの ID フィールドを選択

MySQLクエリでこれを行うにはどうすればよいですか?

ありがとうございます!

4

2 に答える 2

18

の構文IFは次のとおりです。

 IF(test_expr, then_expr, else_expr)

のようなこともできますがIF(test1, result1, IF(test2, result2, else_result))、あまり読みにくいので、そのためのCASE式があります。

CASE WHEN  test1 THEN result1
WHEN test2 THEN result2
ELSE else_result END

選択列を条件付けする場合はIF、選択フィールドで直接使用できます。

SELECT IF(match, nl_column en_column) AS lang 
FROM table

where 句の式は または のいずれTRUEFALSEであることに注意してください。

IF(expr, TRUE, FALSE)

と同じです

expr
于 2013-03-28T13:34:20.023 に答える
8

代わりに CASE を使用してください

CASE
    WHEN languages LIKE '%*nl*%' THEN 1 
    WHEN languages NOT LIKE '%*nl*%' THEN 0
 END as languages 
于 2013-03-28T13:35:10.167 に答える