Oracle thực hiện chuyển đổi String2number tự động , cho các giá trị cột String ! Tuy nhiên, đối với các so sánh văn bản trong SQL, đầu vào phải được phân định rõ ràng dưới dạng Chuỗi: Số chuyển đổi ngược lại2String không được thực hiện tự động, không phải ở cấp truy vấn SQL.
Tôi đã có truy vấn này:
select max(acc_num) from ACCOUNTS where acc_num between 1001000 and 1001999;
Đó là một trong những trình bày một vấn đề: Error: ORA-01722: invalid number
Tôi vừa bao quanh các giá trị "số" , để biến chúng thành 'Chuỗi' , vừa làm cho chúng được phân tách rõ ràng :
select max(acc_num) from ACCOUNTS where acc_num between '1001000' and '1001999';
... và voilà: Nó trả về kết quả mong đợi.
chỉnh sửa:
Và thực sự: col acc_num
trong bảng của tôi được định nghĩa là String
. Mặc dù không phải là số, nhưng invalid number
đã được báo cáo. Và việc phân định rõ ràng các số chuỗi đã giải quyết được vấn đề.
Mặt khác, Oracle có thể coi Chuỗi là số. Vì vậy, các phép toán / hàm số có thể được áp dụng trên các Chuỗi và các truy vấn này hoạt động:
chọn max (chuỗi_cột) từ TABLE;
chọn string_column từ TABLE trong đó string_column giữa '2' và 'z';
chọn string_column từ TABLE trong đó string_column > '1';
chọn string_column từ TABLE trong đó string_column <= 'b';
CUSTOMER
gì? Bạn chỉ cung cấp một nửa thông tin cần thiết.