Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak znaleźć konkretną maskę w ciągu - Oracle?

Brzmi jak problem z modelem danych (przechowywanie daty w ciągu).

Ale ponieważ tak się dzieje i czasami nie możemy kontrolować lub zmieniać rzeczy, zwykle trzymam funkcję taką jak ta:

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;

Następnie użyj go w ten sposób:

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. Jak uzyskać tabelę jako parametr wyjściowy w Oracle?

  2. treść deklaracji opakowania

  3. DB ORACLE QUERY

  4. Różnica między klientem Oracle lnstant a klientem Oracle

  5. Jak dodać „System.Drawing.Image” do „System.Web.UI.WebControls.Image”