sql >> Databáze >  >> RDS >> Mysql

Existuje důvod, proč nepoužívat <=> (null safe se rovná operátor) v mysql místo =?

Ptali jste se na příklady z reálného světa. Tady je jedna falešná. Řekněme, že máte pobytový program pro mládež nebo podobný, a jedním z požadavků je, aby děti sdílely pokoj pouze s někým stejného pohlaví. Ve své databázi máte pole M/F s možnou hodnotou null – s možností null, protože váš zdroj dat je neúplný (stále sháníte některá data). Váš kód pro přiřazování místností by rozhodně neměl odpovídat studentům, kde t1.Gender<=>t2 .Pohlaví, protože by to mohlo skončit spárováním dvou dětí neznámého pohlaví, které by mohly být opačného pohlaví. Místo toho se shodujete tam, kde jsou stejné, a nikoli oba null.

To je jen jeden příklad. Uznávám, že chování NULL a = operátor způsobil v průběhu let mnoho zmatků, ale nakonec chyba pravděpodobně spočívá v množství online výukových programů MySQL, které nezmiňují, jak NULL interaguje s operátory, ani o existenci <=> operátor.



  1. Monitorování záloh napříč instancemi

  2. Jak napsat klauzuli ORDER BY s výjimkami pomocí SQL

  3. Odeslání pole hodnot do procedury Oracle k použití v klauzuli WHERE IN

  4. Jak VYBRAT nejnovější čtyři položky na kategorii?