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

Dlaczego SELECT ... WHERE id =a zwraca wynik, jeśli wartość wynosi 0

MySQL po cichu konwertuje łańcuchy na liczby w kontekście numerycznym.

Robi to poprzez konwersję wiodących znaków numerycznych (takich jak cyfry, znak minus i kropka dziesiętna).

Jeśli nie ma cyfr, zatrzymuje się. A więc:

where id = 'a'

jest interpretowany jako:

where id = 0

Morał:Nigdy nie używaj pojedynczych cudzysłowów wokół stałych numerycznych — lub stałych, które powinny być liczbami.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wybierz wszystkie daty między dwiema datami bez użycia tabeli (wygeneruj listę dat)

  2. Mysql zatrzymaj słowa i dopasuj

  3. Nie można otworzyć i zablokować tabel uprawnień:Tabela „mysql.user” nie istnieje

  4. Minimalne GRANTy potrzebne mysqldump do zrzucenia pełnego schematu? (Brakuje wyzwalaczy!!)

  5. Zaimportuj i wstaw plik sql.gz do bazy danych za pomocą programu putty