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

  • Madeon

    Madeon

    31 Ocak 2010
  • Megan Parken

    Megan Parken

    19 Temmuz 2009
  • Missouri Star Quilt Company

    Missouri Sta

    18 ŞUBAT 2009