Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak napisać bezpieczne porównanie o wartości null <=> w czystym SQL?

Odpowiedzi na drugim miejscu i kolejne dają metodę, aby to zrobić bez dwukrotnego wiązania wartości wyszukiwania:

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

Zauważ, że wymaga to fikcyjnej wartości, która nigdy nie może być prawidłową wartością kolumny (czyli „poza pasmem”); Używam pustego ciągu. Jeśli nie masz takiej wartości, będziesz musiał pogodzić się z dwukrotnym wiązaniem wartości:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę użyć JOIN w instrukcji UPDATE?

  2. Nie można znaleźć wpisu type=wartość obrazu w $_POST

  3. Dlaczego jdbcTemplate.batchUpdate() Springa jest tak powolny?

  4. Migracja z MySQL do PostgreSQL — co powinieneś wiedzieć

  5. java.lang.IllegalStateException:próba wykonania operacji na zamkniętej fabryce EntityManagerFactory