TL; DR
Bu var NULLgüvenli eşit operatörü.
Normal =operatör gibi, iki değer karşılaştırılır ve sonuç ya 0eşittir 1(eşit değildir) ya da (eşittir); diğer bir deyişle: 'a' <=> 'b'verim 0ve 'a' <=> 'a'verim 1.
Normal =operatörün aksine , değerlerin NULLözel bir anlamı yoktur ve bu nedenle asla NULLolası bir sonuç olarak ortaya çıkmaz ; yani: 'a' <=> NULLverim 0ve NULL <=> NULLverim 1.
kullanışlılık
Bu, her iki işlenen de içerebilir NULLve 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 NULLsorgu 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 NULLve 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
spaceshipOperatör