2016-04-04 24 views
0

Daha önce MySQL tablosundaki bu garip davranışla karşılaşırsanız emin olun: Tablo alanı NULL varsayılan olduğunda, basit bir UPDATE deyiminde sorun yok. field=field+1 numarasını yayınlayacak olsaydım, değer güncellenmez. Sonra ne yaptım o alana 0 eklemek ve tekrar o zaman aynı field=field+1 çalıştırın çalışır.MySQL Güncelleştirmesi NULL Field with Field = Alan + 1 Garip Davranış

UPDATE table1 SET field=field+1 WHERE id=123; 

bu davranış sizin için mi?

p/s: güncelleme kullanım için daha sonra boş bir alan varsa field tip double

+0

için lütfen sorgunuzu paylaşın –

+0

, SQL ifadesini – d4v1dv00

cevap

1

olduğunu.

//structure 
UPDATE TableName SET column = IFNULL(column, 0) + 1 WHERE ... 

//original 
UPDATE table1 SET field = IFNULL(field, 0) + 1 WHERE id=123; 

Diğer ayrıntılar: function_ifnull

Ref # mysql-update-increment-int-field-that-is-null

+0

'un üzerine ekledi. Geçici çözümüm, alanın varsayılan değerini sıfıra (0) çevirmektir, bunun işe yaramayacağından emin olun. – d4v1dv00

+0

bu, alanı önce sıfıra getirecek ve onu artıracaktır. –

+1

havalı. Bu benim için çalışacaktır, çünkü bunun gibi başka alanlara sahibim ve çok fazla IFNULL fonksiyon kontrolüne sahip olmak istemiyorum. Teşekkürler – d4v1dv00

1

NULL+1 = NULL 

Yani var da ondan etmek "hile" o yapabilirsiniz 0.

UPDATE table1 SET field=COALESCE(field,0)+1 WHERE id=123; 
İlgili konular