Oracle, String sütun değerleri için otomatik String2number dönüşümü yapar ! Bununla birlikte, SQL'deki metinsel karşılaştırmalar için, girdi açıkça bir Dize olarak sınırlandırılmalıdır: Ters dönüştürme number2String, SQL sorgusu düzeyinde değil, otomatik olarak gerçekleştirilmez.
Bu sorguyu aldım:
select max(acc_num) from ACCOUNTS where acc_num between 1001000 and 1001999;
Bu bir sorun teşkil ediyordu: Error: ORA-01722: invalid number
"Sayısal" değerleri "Dizeler" yapmak için çevreledim , sadece onları açıkça sınırlandırdım :
select max(acc_num) from ACCOUNTS where acc_num between '1001000' and '1001999';
... ve voilà: Beklenen sonucu döndürür.
düzenleme:
Ve gerçekten: tablomdaki sütun acc_num
olarak tanımlanmıştır String
. Sayısal olmasa invalid number
da rapor edildi. Ve dizi numaralarının açıkça sınırlandırılması sorunu çözdü.
Öte yandan Oracle , Dizeleri sayı olarak ele alabilir . Böylece sayısal işlemler / işlevler Dizelere uygulanabilir ve bu sorgular çalışır:
TABLE'den max (string_column) seçin ;
TABLO gelen string_column seçmek burada string_column arasında ve 'z' '2';
TABLE'den string_column seçin, burada string_column > '1';
TABLE'den string_column seçin burada string_column <= 'b';
CUSTOMER
? Gerekli bilginin sadece yarısını verdin.