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

MAX(Kolom) mengembalikan saya nilai yang salah

Situasi ini dapat terjadi jika invoice_number Anda disimpan sebagai kolom teks mis. varchar(10) . Dalam hal ini, berdasarkan urutan abjad, 9 akan menjadi nilai maksimum.

Idealnya, Anda harus menyimpan nilai di mana Anda ingin melakukan operasi numerik sebagai tipe data numerik mis. int . Namun, jika karena alasan tertentu Anda tidak dapat mengubah tipe data kolom, Anda dapat mencoba mentransmisikan kolom sebelum menerapkan MAX , seperti ini:

select max (convert(invoice_number, signed integer)) as maxinv from invoice

CATATAN:Saya secara khusus menyebutkan "nilai yang Anda inginkan untuk melakukan operasi numerik" karena ada kasus di mana teks input seluruhnya numerik, seperti nomor telepon atau mungkin nomor kartu kredit, tetapi tidak ada skenario di mana Anda ingin menambahkan 2 nomor telepon, atau mengambil akar kuadrat dari nomor kartu kredit. Nilai tersebut harus disimpan sebagai teks.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mengapa gabungan kiri ini hanya mengembalikan satu catatan?

  2. Konversi detik ke hari, jam, menit, detik (MySQL)

  3. Butuh bantuan merancang struktur db faktur saya

  4. SQL:bagaimana cara saya memesan berdasarkan bidang jika bukan nol lagi gunakan bidang lain

  5. String koneksi ODBC 5.1 untuk MySQL dengan akses hanya baca