SORU
21 ŞUBAT 2014, Cuma


Bu operatör <=> MySQL?

Diyor ki, sorguda kod bir önceki geliştirici tarafından yazılmış ve çalışıyorum

WHERE p.name <=> NULL

<=> Bu sorguda ne anlama geliyor? Bir şey = eşittir? Yoksa yazım hatası mı?

Ama herhangi bir hata ya da özel durumlar gösteriyor. Ben zaten <> = != MySQL.

CEVAP
21 ŞUBAT 2014, Cuma


= operatörü ile benzerlik

Gibi düzenli = operatör, iki değer karşılaştırılır ve sonuç da 0 (eşit değildir) veya 1 (eşit); başka bir deyişle: 'a' <=> 'b' verim 0 'a' <=> 'a' verim 1.

= operatörü ile fark

Aksine düzenli = operatör, değerler NULL yok özel bir anlamı ve hiç verim NULL gibi bir olası sonuç; yani: 'a' <=> NULL verim 0 NULL <=> NULL verim 1.

Aksine =, mademki 'a' = NULL verim NULL ve hatta NULL = NULL verim NULL; BTW, neredeyse tüm operatörler ve işlevleri MySQL işlerinde bu şekilde, çünkü karşılaştırma karşı NULL temel olarak tanımlanmamış.

Kullanışlılık

Bu her iki işlenen NULL içerebilir zaman için çok faydalı ve tutarlı bir karşılaştırma iki sütun arasında bir neden gerekir.

-Başka bir durumda kullanın, örneğin: hazırlanmış deyimleri ile

... WHERE col_a <=> ? ...

Burada, yer tutucu sorgu hakkında bir şey değiştirmek zorunda kalmadan ya da bir sayısal değer ya NULL olabilir.

İlgili operatörler

Ayrıca <=> ayrıca iki diğer operatörler de olabilir, karşılaştırın karşı NULL, yani IS NULL IS NOT NULL; onlar bir parçası ANSI standart ve bu nedenle desteklenen diğer veritabanları, aksine <=> olan MySQL özgü.

MySQL uzmanlıklar <=> olarak düşünebilirsiniz:

'a' IS NULL     ==> 'a' <=> NULL
'a' IS NOT NULL ==> NOT('a' <=> NULL)

Buna dayanarak, belirli bir sorgu (parça) daha fazla taşınabilir dönüştürülebilir:

WHERE p.name IS NULL

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dopelives

    Dopelives

    30 Temmuz 2009
  • manadude21

    manadude21

    11 Mart 2008
  • sknbp

    sknbp

    16 Kasım 2006