2013-03-28 26 views
10

Başarılı olmadan bir MySQL WHERE ifadesinde IF ... ELSE işlevini kullanmaya çalışıyorum.IF ... WHERE yan tümcesinde ELSE MySQL

bu sorgu var:

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

Tamam, bu EĞER deyimi ile benim sorgusu olur.

Yine de "ELSE" yi nasıl kullanabilirim?

Örnek, Benzer bir şey yapmak istiyorum:

EĞER dil maçı nl ---> dil nl

BAŞKA

dil nl maç IF NOT olduğunu select id alanı - -> dilin bulunduğu alanın kimliğini seç tr

Bunu bir MySQL sorgusunda nasıl yapabilirim, lütfen?

Herkese teşekkürler! IF için

+0

bazı örnek verileri ve Sorgunuzun amaçlanan sonuçları gönderir misiniz? – eggyal

+0

'dilin nl' olduğu kimlik alanını seç nedir? – didierc

cevap

16

sözdizimi:

IF(test_expr, then_expr, else_expr) 

böylece IF(test1, result1, IF(test2, result2, else_result)) gibi bir şey yapabileceğini ancak çok okunabilir olmaz, bu nedenle bu amaçla CASE ifadesi var.

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

bir seçme sütunu şart istiyorsanız, doğrudan seçme alanlarda IF kullanabilirsiniz:

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

bir de bir ifade şartı olduğunu Not ya TRUE veya FALSE, böylece yazma

IF(expr, TRUE, FALSE) 

012 ile aynıdır
8

kullanım VAKA yerine

CASE 
    WHEN languages LIKE '%*nl*%' THEN 1 
    WHEN languages NOT LIKE '%*nl*%' THEN 0 
END as languages