Oracle melakukan konversi String2number otomatis , untuk nilai kolom String ! Namun, untuk perbandingan tekstual dalam SQL, masukan harus dibatasi sebagai String secara eksplisit: Konversi yang berlawanan number2String tidak dilakukan secara otomatis, tidak pada tingkat kueri SQL.
Saya punya pertanyaan ini:
select max(acc_num) from ACCOUNTS where acc_num between 1001000 and 1001999;
Yang itu menimbulkan masalah: Error: ORA-01722: invalid number
Saya baru saja mengapit nilai "numerik" , untuk menjadikannya 'String' , hanya membuatnya dibatasi secara eksplisit :
select max(acc_num) from ACCOUNTS where acc_num between '1001000' and '1001999';
... dan voila: Ini mengembalikan hasil yang diharapkan.
edit:
Dan memang: kolom acc_num
di tabel saya didefinisikan sebagai String
. Meski tidak numerik, namun invalid number
dilaporkan. Dan pembatas eksplisit dari nomor-string menyelesaikan masalah.
Di sisi lain, Oracle dapat memperlakukan String sebagai angka. Jadi operasi / fungsi numerik dapat diterapkan pada String, dan kueri ini berfungsi:
pilih max (string_column) dari TABLE;
pilih string_column dari TABLE di mana string_column antara '2' dan 'z';
pilih string_column dari TABLE di mana string_column > '1';
pilih string_column dari TABLE di mana string_column <= 'b';
CUSTOMER
? Anda hanya memberikan setengah dari informasi yang dibutuhkan.