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

Làm thế nào để tìm một mặt nạ cụ thể trong một chuỗi - Oracle?

Nghe giống như một vấn đề về mô hình dữ liệu (lưu trữ ngày tháng trong một chuỗi).

Nhưng, vì nó xảy ra và đôi khi chúng ta không thể kiểm soát hoặc thay đổi mọi thứ, nên tôi thường giữ một chức năng như sau:

CREATE OR REPLACE FUNCTION safe_to_date (p_string        IN VARCHAR2,
                                         p_format_mask   IN VARCHAR2,
                                         p_error_date    IN DATE DEFAULT NULL)
  RETURN DATE
  DETERMINISTIC IS
  x_date   DATE;
BEGIN
  BEGIN
    x_date   := TO_DATE (p_string, p_format_mask);
    RETURN x_date;                                                        -- Only gets here if conversion was successful
  EXCEPTION
    WHEN OTHERS THEN
      RETURN p_error_date;
  END;
END safe_to_date;

Sau đó, sử dụng nó như thế này:

WITH d AS
       (SELECT 'X' string_field FROM DUAL
        UNION ALL
        SELECT '11/15/2012' FROM DUAL
        UNION ALL
        SELECT '155' FROM DUAL)
SELECT safe_to_date (d.string_field, 'MM/DD/YYYY')
FROM   d;


  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 Làm thế nào để cấp quyền TẠO BẤT KỲ THƯ MỤC NÀO với hạn chế rằng tất cả các thư mục phải được tạo bên trong một thư mục nhất định?

  2. ORA-1843:không phải là tháng hợp lệ trong khi cập nhật hồ sơ

  3. cách sử dụng dbms_scheduler để chạy công việc sau mỗi 30 phút

  4. Oracle SQL Ghép nối các số tuần tự trái phải với số nhận dạng

  5. Bản ghi PLSQL trong Oracle là gì