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

UPDATE mysql op nefunguje s číslem cc

Číslo kreditní karty není „číslo“ v matematickém smyslu, je to jen řetězec číslic. Nikdy se nemusíte ptát:„Co je to číslo karty plus jedna?“ nebo "...krát dva?", ale možná se budete chtít zeptat "jaké jsou první čtyři číslice tohoto čísla karty?" nebo „poslední čtyři...?“

Pokud s ním budete zacházet jako s číslem, bude to číslo mnohem větší, než se kterým byste normálně pracovali:44443333322221111 (číslo testovací karty Visa) je „4 kvadriliony 444 bilionů 333 miliard 322 milionů 221 tisíc 1 sto 11“.

Důležité je, že největší číslo, které lze uložit do 32bitového celého čísla se znaménkem – což je to, co získáte, když v SQL zadáte „int“ – je jen více než 2 miliardy, takže číslo karty se ani zdaleka nevejde. Vaše databáze vám buď oznámí chybu, nebo prostě uloží nějaké jiné číslo, které se hodí – ve vašem případě ukládá pouze nejvyšší možné číslo.

Svůj sloupec můžete změnit na „bigint“ (64bitové znaménko, maximální hodnota kolem 9 kvintilionů), ale je lepší s nimi zacházet jako s řetězci ve vašem PHP a VarChar ve vaší databázi.




  1. Agregát Oracle pro spojování řetězců čárkou a o psaní vlastních agregátů

  2. Co dělat, když na mysql potřebujete celá čísla větší než 20 číslic?

  3. Kdy jsou připojení vrácena do fondu připojení pomocí Spring JPA (Hibernate) Entity Manager?

  4. Android ListView:jak se vyhnout databázovému dotazu v bindView()? Potřebujete načíst jeden až mnoho dat o vztahu