正規表現を使用してフォーマットをテストできます。
次のようになります:
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日はチェックしませんが、多くのエラーを検出します。