Rails3 uygulamasında beklenmedik bir postgres sorgu sorununa rastladım. Bir SQL sorgusunda NULL! = Değeri (postgres ve rails3)
ben stackoverflow bu çalıştırın ve internet beyinleri söylemek :)bu sonuç Beklenen davranış (ve neden ?!) mı yoksa bu bir hata olduğunu ne olduğunu görmek düşündüm? Ben, Siparişler, benim Postgres 9.1.4 veritabanı bir tablo var olduğu göz önüne alındığında
:
id state
===== ======
1 <-- nil (default value)
2 'success'
3 'failure'
Ben sorguyu çalıştırdığınızda:
Order.where('orders.state != ?', 'success').map { |order| order.id }
Order Load (3.8ms) SELECT "orders".* FROM "orders" WHERE (orders.state != 'success')
=> [3]
bekliyordum sonucu [1, 3 ]. Açıkça (! = 'Başarı') olan 2 satır vardır.
Neden bu nil! = 'Başarı' burada doğru değil mi? Yapar! = NULL değerleri görmezden gelmek mi? yapmalı mıyım?
NOT: herhangi bir yorum mutluluk duyacağız
Order.where('orders.state IS NULL OR orders.state != ?', 'success').map { |order| order.id }
Order Load (2.3ms) SELECT "orders".* FROM "orders" WHERE (orders.state IS NULL OR orders.state != 'success')
=> [1, 3]
: Aşağıdaki sorguyu kullanarak istenen sonucu üretti.
Neden olduğunu bilmiyorum ama ilk isteğiniz * qb_sync_status * kontrol ederken * durumu * ... – Raindal
aah, çünkü bu örneği kötü kopyalayıp yapıştırdım. düzeltildi, teşekkürler Sparda –
Bu, temeldeki SQL'in çalışması için bir yoldur. NULL değeri, veri seçerken sorunlara neden olabilir, çünkü bilinmeyen bir değeri, yani NULL'u başka herhangi bir değere kıyasla, sonuç her zaman bilinmez ve nihai sonuçlara dahil değildir. – thisfeller