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

Jak napsat nulové bezpečné porovnání <=> v čistém SQL?

Odpovědi na druhém místě a následující odpovědi poskytují způsob, jak toho dosáhnout, aniž by se hledaná hodnota vázala dvakrát:

SELECT * FROM ROUTERS 
WHERE coalesce(ROUTER_ADDRESS, '') = coalesce( ?, '');

Všimněte si, že to vyžaduje fiktivní hodnotu, která nikdy nemůže být platnou hodnotou sloupce (to je "mimo pásmo"); Používám prázdný řetězec. Pokud žádnou takovou hodnotu nemáte, budete se muset smířit s vázáním hodnoty dvakrát:

SELECT * FROM ROUTERS 
WHERE ROUTER_ADDRESS = ? or (ROUTER_ADDRESS is null and ? is null);


  1. Vývoj odolnosti vůči chybám v PostgreSQL:Synchronní závazek

  2. MySQL MATCH nefunguje se dvěma znaky?

  3. GroupingError:ERROR:sloupec se musí objevit v klauzuli GROUP BY nebo být použit v agregační funkci

  4. Doktrína 2 a tabulka odkazů Many-to-many s dalším polem