Tôi giả định rằng qty
được định nghĩa là một varchar2
trong my_table
- nếu không, sẽ không có mục đích nào được phục vụ bằng cách gọi to_number
. Nếu giả định đó là đúng, tôi sẽ đặt cược rằng có một số hàng khác trong bảng có qty
có dữ liệu không phải số trong đó.
SQL là một ngôn ngữ dựa trên tập hợp nên Oracle (hoặc bất kỳ cơ sở dữ liệu nào khác) hoàn toàn có thể tự do đánh giá mọi thứ theo bất kỳ thứ tự nào mà nó thấy phù hợp. Điều đó có nghĩa là Oracle hoàn toàn miễn phí khi đánh giá to_number(qty)
biểu thức trước khi áp dụng id=12345
Thuộc tính. Nếu Oracle tình cờ gặp một hàng có qty
không thể chuyển đổi giá trị thành số, nó sẽ gây ra lỗi.
Cũng có thể có một số dữ liệu không phải số trong hàng cụ thể nơi id=12345
điều đó xảy ra không được hiển thị (ví dụ:các ký tự điều khiển). Bạn có thể kiểm tra điều đó bằng cách chạy truy vấn
SELECT dump(qty, 1016)
FROM my_table
WHERE id = 12345
(nếu bạn muốn thập phân thay vì thập lục phân, hãy sử dụng 1010 làm tham số thứ hai để dump
) và kiểm tra xem có điều gì bất ngờ trong dữ liệu hay không.