Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

TO_CHAR (số) Hàm trả về ORA-01722:số không hợp lệ

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển đổi hàng thành cột trong SQL oracle

  2. Chuyển đổi một chuỗi ngày thành datetime trong Oracle

  3. SQL đệ quy cho ORA-01790

  4. Cách hiển thị 0 khi không tìm thấy hàng

  5. Cách tham chiếu đến một cột theo ID hoặc số chỉ mục