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

関数を使用せずにOracleで日付を検証する

    正規表現を使用してフォーマットをテストできます。

    次のようになります:

    select dates
    from tbl
    where regexp_like(dates, '[[:digit:]]{4}/[[:digit:]]{2}/[[:digit:]]{2}')
    

    これは問題なく動作します。フォーマットが「4桁の数字/2桁の数字/2桁の数字」であることを確認します。次のような、より強力なものが必要になる場合があります。

    select dates
    from tbl
    where regexp_like(dates, '[[:digit:]]{4}/[[:digit:]]{2}/[[:digit:]]{2}') or
          (substr(dates, 1, 4) not between '1900' and '2014' or
           substr(dates, 6, 2) not between '01' and '12' 
           substr(dates, 9, 2) not between '01' and '31'
          )
    

    これにより、フォーマットがチェックされ、各列に適切な値がないかチェックされます。もちろん、6月31日はチェックしませんが、多くのエラーを検出します。



    1. 動的ピボットテーブルに最小値と最大値を表示する方法

    2. PHPメールのダイナミックHTMLテーブル

    3. SQLクエリは使用可能なインデックスを使用しません(SQL Server 2008)

    4. 一般的なエラー:キー制約を作成するときの1005-Laravel