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

Oracle:Tránh giá trị NULL trong to_date

Nếu start_date là NULL, không có ngoại lệ nào được ném ra.

select to_date( null, 'mm/dd/yyyy' ) 
  from dual

là một câu lệnh SQL hoàn toàn hợp lệ trả về NULL.

Lỗi bạn đang gặp phải ám chỉ rằng ít nhất một số hàng trong start_date cột thực sự không phải là các chuỗi ở định dạng bạn mong đợi hoặc ánh xạ đến các ngày không hợp lệ (tức là chuỗi '13 / 35/2007 '). Bạn có thể viết một hàm để kiểm tra xem liệu một chuỗi có thể được chuyển đổi thành ngày và trả về ngày đã chuyển đổi hoặc NULL hay không. Sau đó, bạn có thể sử dụng nó thay vì to_date .

CREATE OR REPLACE FUNCTION my_to_date( p_str    IN VARCHAR2,
                                       p_format IN VARCHAR2 )
  RETURN DATE
IS
BEGIN
  RETURN to_date( p_str, p_format );
EXCEPTION
  WHEN OTHERS
  THEN
    RETURN NULL;
END;

và sau đó sử dụng my_to_date thay vì to_date . Điều đó sẽ loại bỏ lỗi bạn đang gặp phải. Tuy nhiên, có thể bạn sẽ muốn dọn dẹp dữ liệu để loại bỏ các chuỗi không hợp lệ.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle.ManagedDataAccess không giải quyết bí danh trong chuỗi kết nối

  2. Có bất kỳ trình phân tích cú pháp nào tồn tại cho table_reference của Oracle DML không?

  3. Làm cách nào để di chuyển tệp zip sang cột blob trong Java?

  4. Tập lệnh quản trị trong R12.2 Ebuisness Suite

  5. Làm thế nào để tăng kích thước bộ đệm trong Oracle SQL Developer để xem tất cả các bản ghi?