MySQL'de üçlü koşullu operatör uygulamak istiyorum. Bir alan kimliğinin bulunduğu bir tablom var. Değeri boş olabilir. Bunun id
gibi üçlü koşullu biçimde görüntülemek istiyorum:
select id = id == null ? 0 : id;
MySQL'de mümkün mü?
MySQL'de üçlü koşullu operatör uygulamak istiyorum. Bir alan kimliğinin bulunduğu bir tablom var. Değeri boş olabilir. Bunun id
gibi üçlü koşullu biçimde görüntülemek istiyorum:
select id = id == null ? 0 : id;
MySQL'de mümkün mü?
Yanıtlar:
Bunu dene :
select if(Id is null, 0, id) as Id;
null
veya ''
hatta belki de yapmanız gerekir 0
. mySQL bazen biraz
Belgeler sizin dostunuzdur; okumalısın!
Diyor ki:
IFNULL(expr1,expr2)
Eğer
expr1
değilNULL
,IFNULL()
dönerexpr1
; aksi takdirde geri dönerexpr2
.
Ve sonra birçok örnek. Bu, NULL
ikinci 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`
CASE WHEN id IS NULL THEN 0 ELSE id END
IFNULL
terser.
IF
yerine kullanmam gerekiyor ve boş olmayan değerleri içe aktarmak istemiyorum, yalnızca genel bir durum olarak yorumlayın. benim için çalışıyor. IFNULL
COALESCE
SELECT IF(a.cancellationReason IS NOT NULL, 'C', 'A')) as appointment_status
Üçlü bir operatörle aynı mantığı uygulayabileceğiniz iki yol vardır:
IF
İşlevi kullanın , örn.IF(expression, true result, false result)
CASE
İfadeyi kullanın , örneğin.
CASE WHEN expression THEN <true result> ELSE <false_result> END
NULL'u kontrol ederken, o zaman IFNULL
veya COALESCE
işlevlerini kullanabilirsiniz , örn.
IFNULL(ID, 0)
COALESCE(ID, 0)