MySQL'de üçlü koşullu operatör nasıl uygulanır


Yanıtlar:


151

Bunu dene :

select if(Id is null, 0, id) as Id;

1
Steno olmaması çok yazık. Eğer sadece doğruya eşit olan ilk değeri elde etmek istiyorsanız, kontrol etmeniz nullveya ''hatta belki de yapmanız gerekir 0. mySQL bazen biraz
duche

53

Belgeler sizin dostunuzdur; okumalısın!

Diyor ki:

IFNULL(expr1,expr2)

Eğer expr1değil NULL, IFNULL()döner expr1; aksi takdirde geri döner expr2.

Ve sonra birçok örnek. Bu, NULLikinci işlenen olarak bir karşılaştırma ve karşılaştırma konusu ile bir üçlü koşullu kullanmaya eşdeğerdir ; sembollerin kullanılmadığı ?ve :sizi oraya götürmenin hiçbir şeyle gerçekten alakalı olmadığı.

Öyleyse, senin durumunda:

SELECT IFNULL(`id`, 0) FROM `table`

Açıkça üç işlenen sağlamak için çaresizseniz (neden ?!), o zaman şuna geçin IF:

SELECT IF(`id` IS NULL, 0, `id`) FROM `table`

4
+1, ancak soruyu yanıtlamak için:CASE WHEN id IS NULL THEN 0 ELSE id END
Michael Krelin - hacker

@ MichaelKrelin-hacker: Aynı şey, değil mi? Ve IFNULLterser.
Orbit'te Hafiflik Yarışları

@ MichaelKrelin-hacker: Oh, anladım.
Orbit'te Hafiflik Yarışları

Elbette, üçlü hakkındaki soruyu yanıtlamak için :)
Michael Krelin - hacker

Benim durumumda, verileri farklı bir satıcı veritabanına taşıdığım için veya IFyerine kullanmam gerekiyor ve boş olmayan değerleri içe aktarmak istemiyorum, yalnızca genel bir durum olarak yorumlayın. benim için çalışıyor. IFNULLCOALESCESELECT IF(a.cancellationReason IS NOT NULL, 'C', 'A')) as appointment_status
Adam Elsodaney

22

Üçlü bir operatörle aynı mantığı uygulayabileceğiniz iki yol vardır:

  1. IFİşlevi kullanın , örn.IF(expression, true result, false result)
  2. CASEİfadeyi kullanın , örneğin.

    CASE WHEN expression THEN <true result> ELSE <false_result> END
    

NULL'u kontrol ederken, o zaman IFNULLveya COALESCEişlevlerini kullanabilirsiniz , örn.

IFNULL(ID, 0)
COALESCE(ID, 0)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.