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.