Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

UPDATE mysql op tidak berfungsi dengan cc-number

Nomor kartu kredit bukanlah "angka" dalam pengertian matematis, itu hanya rangkaian angka. Anda tidak perlu bertanya "berapa nomor kartu ini plus satu?" atau "...kali dua?", tetapi Anda mungkin ingin bertanya "berapa empat digit pertama dari nomor kartu ini?" atau "empat terakhir...?"

Jika Anda memperlakukannya sebagai angka, itu akan menjadi angka yang jauh lebih besar daripada yang biasanya Anda gunakan:44443333322221111 (nomor kartu tes Visa) adalah "4 kuadriliun 444 triliun 333 miliar 322 juta 221 ribu seratus 11".

Yang penting, jumlah terbesar yang dapat disimpan dalam bilangan bulat 32-bit yang ditandatangani - yang Anda dapatkan ketika Anda menentukan "int" dalam SQL - hanya lebih dari 2 miliar, jadi nomor kartu tidak mendekati pas. Basis data Anda akan memberi Anda kesalahan, atau hanya menyimpan beberapa nomor lain yang sesuai - dalam kasus Anda, itu hanya menyimpan nomor tertinggi.

Anda dapat mengubah kolom Anda menjadi "bigint" (bertanda tangan 64-bit, nilai maksimum sekitar 9 triliun), tetapi Anda lebih baik memperlakukannya sebagai string di PHP, dan VarChar di database Anda.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memilih catatan N terbesar dalam grup X

  2. Buat kueri bergabung di loopback.io

  3. Membuat array json menggunakan concat dengan MySql

  4. Alias ​​​​untuk klausa GROUP BY?

  5. menyimpan angka negatif di bidang desimal tabel mysql pada versi 5.0.3