TL; DR
Bu var NULL
güvenli eşit operatörü.
Normal =
operatör gibi, iki değer karşılaştırılır ve sonuç ya 0
eşittir 1
(eşit değildir) ya da (eşittir); diğer bir deyişle: 'a' <=> 'b'
verim 0
ve 'a' <=> 'a'
verim 1
.
Normal =
operatörün aksine , değerlerin NULL
özel bir anlamı yoktur ve bu nedenle asla NULL
olası bir sonuç olarak ortaya çıkmaz ; yani: 'a' <=> NULL
verim 0
ve NULL <=> NULL
verim 1
.
kullanışlılık
Bu, her iki işlenen de içerebilir NULL
ve iki sütun arasında tutarlı bir karşılaştırma sonucuna ihtiyacınız olduğunda faydalı olabilir .
Başka bir kullanım örneği hazırlanmış ifadelerle, örneğin:
... WHERE col_a <=> ? ...
Burada yer tutucu, skaler bir değer olabilir veya NULL
sorgu hakkında herhangi bir değişiklik yapmak zorunda kalmayabilir.
İlgili operatörler
Bunun yanı sıra <=>
karşılaştırmak için kullanılabilecek iki diğer operatörler de bulunmaktadır NULL
, yani, IS NULL
ve IS NOT NULL
; bunlar ANSI standardının bir parçasıdır ve bu nedenle <=>
MySQL'e özgü diğer veritabanlarında desteklenir .
Bunları MySQL'lerin uzmanlığı olarak düşünebilirsiniz <=>
:
'a' IS NULL ==> 'a' <=> NULL
'a' IS NOT NULL ==> NOT('a' <=> NULL)
Buna dayanarak, özel sorgunuz (parça) daha taşınabilir hale dönüştürülebilir:
WHERE p.name IS NULL
Destek
SQL: 2003 standardı, MySQL'in <=>
operatörü gibi çalışan bunun için bir önermeyi şu şekilde tanıttı :
IS [NOT] DISTINCT FROM
Aşağıdakiler evrensel olarak desteklenir, ancak göreceli olarak karmaşıktır:
CASE WHEN (a = b) or (a IS NULL AND b IS NULL)
THEN 1
ELSE 0
END = 1
spaceship
Operatör