MYSQL IF (İFADE1, İFADE2, ifade3) ama ifade3 sonra € ™ t hiçbir çıktı dona eğer t (herhangi ifade3 istediğiniz ™ € dona

3 Cevap php

Gibi başlık diyor uyuyorsa eğer, ben sadece uyumlu değilse o zaman ben herhangi bir çıktı istemiyorum, bir çıkış istiyorum.

Ben şu anda bu var, ama belli ki bir hata veriyor

...rFormat=IF(ISNULL(rFormat), VALUES(rFormat),UNCHANGED)…

I http://dev.mysql.com/doc/refman/5.4/en/control-flow-functions.html etrafına baktı ama gerçekten bunu nasıl dışarı bulamadık.

Bu soru, tür http://stackoverflow.com/questions/1837912/only-update-the-mysql-field-if-the-field-contains-null-or-0 ile ilgilidir

Bu bağlamında kullanılır: (yukarıdaki URL görüldüğü gibi)

………
ON DUPLICATE KEY UPDATE
rFormat=VALUES(rFormat),
rFiles=IF(ISNULL(rFiles), VALUES(rFiles), VALUES(rSizeMB)),
rText=VALUES(rText);

3 Cevap

Siz sadece yapabilirdi

IF(ISNULL(rFormat), VALUES(rFormat), rFormat)

Ancak, bu noktada DEĞERLERİ () arayarak ulaşmak için çalışıyoruz ne emin değilim.

Sadece WHERE rFormat IS NULL yerine IF kullanımı.

Bu deneyin:

rFiles = COALESCE (existingColumnValue, '$ newValue')

COALESCE ilk null olmayan bir değer döndürür. Eğer bir dize ise $ newValue tırnak ihtiyacınız olacak, ve kaçmak için unutma unutmayın. Sen sütun adı (existingColumnValue) etrafında tırnak kullanmaz. Eğer aynı değer olarak NULL olarak (INT) 0 olan satırlar için arıyorsanız, bu denemek isteyebilirsiniz:

rFiles = CASE existingColumnValue WHEN NULL THEN '$newValue' WHEN 0 THEN '$newValue' ELSE existingColumnValue END CASE

Ben daha iyi bir çözüm ifade verebilecek böylece sütun adlarını değiştirmek zorunda kaldı. Hala anlamak umuyoruz. Ben $ newValue veritabanında başka bir sütun olmadığını varsayarak, ama bir değişken Betiğiniz geçirilen.