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

UPDATE mysql op nie działa z numerem cc

Numer karty kredytowej nie jest „liczbą” w sensie matematycznym, to po prostu ciąg cyfr. Nigdy nie musisz pytać „jaki jest numer karty plus jeden?” lub „...razy dwa?”, ale możesz zapytać „jakie są pierwsze cztery cyfry numeru tej karty?” lub „ostatnie cztery...?”

Jeśli potraktujesz ją jako liczbę, będzie to liczba znacznie większa niż normalnie:444433333322221111 (numer karty testowej Visa) to „4 biliardy 444 biliony 333 miliardy 322 miliony 221 tysięcy sto 11”.

Co ważne, największa liczba, jaka może być przechowywana w 32-bitowej liczbie całkowitej ze znakiem – którą otrzymujesz po określeniu „int” w SQL – to po prostu ponad 2 miliardy, więc numer karty nie jest zbliżony. Twoja baza danych albo wyświetli błąd, albo po prostu przechowa inny numer, który pasuje - w twoim przypadku po prostu przechowuje najwyższy możliwy numer.

Możesz zmienić swoją kolumnę na „bigint” (64-bitowy ze znakiem, maksymalna wartość około 9 kwintylionów), ale lepiej traktować je jako ciągi w PHP, a VarChar w bazie danych.




  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 znaleźć średnią różnic z ostatnich N odczytów kolumny PHP MySQL

  2. Różnice między MySQL a SQL Server

  3. MySQL nie używa indeksów podczas zapytań przez pole BIT przy użyciu funkcji bitowych

  4. Jak uzyskać odpowiednik ResultSetMetaData bez ResultSet?

  5. zapobiec wstrzykiwaniu sql