sql >> データベース >  >> RDS >> Oracle

文字列内で特定のマスクを見つける方法 - Oracle?

    データ モデルの問題 (文字列に日付を格納する) のように聞こえます。

    しかし、それが起こり、物事を制御したり変更したりできない場合があるため、私は通常、次のような関数を保持しています:

    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;
      

    次に、次のように使用します:

    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. mysql2 gemが原因で、バンドル更新を実行できません

    2. MySQLを使用して2つのコンマ区切りの文字列リストを比較する方法

    3. PostgreSQLのPL/pgSQL関数の実行プランキャッシュ

    4. Oracle:複数のテーブルの更新=> ORA-01779:キーが保持されていないテーブルにマップする列を変更できません