【ACCESS】クエリによる正規表現の基本的書き方
いつもお世話になっております。
ACCESSのクエリで、下記8パターンにマッチする文字列を
yyyyMMddの形で抽出する方法が判りません。
例でも構わないので、ご教示いただけないでしょうか。
(1)yyyyMMdd (数字は半角)
(2)yyyy年M月dd日 (数字は半角)
(3)yyyy年MM月dd日 (数字は全角)
(4)yyyy年M月dd日 (数字は全角)
(5)yyyy年MM月dd日 (数字は半角)
(6)yyyy年M月dd (数字は半角)
(7)yyyy/MM/dd (数字は全角)
(8)yyyy/MM/dd (数字は半角)
※12月32日等の日付不正は対象外
数字の全・半角は区別しなくても抽出可能と考えています。
ただ、そもそも、正規表現の基本的な書き方が判らず。。
グループ化させるための括弧「()」や、論理和の「|」を使うと
抽出できませんでした。
accessでは利用不可なのでしょうか。。
一応、私の作成したクエリを掲載致します。
テーブルaからdate列を抽出します。上記8パターンにマッチする場合は、yyyyMMdd形式で、いずれにもマッチしなければ空白を返させたいと思います。
SELECT IIf (a.date Like '[1-9][0-9][0-9][0-9](0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])', a.date,
IIf (a.date Like '[1-9][0-9][0-9][0-9]年[1-9]月(0[1-9]|[12][0-9]|3[01])日', Format(CDate(Format(Replace(Replace(Replace(a.date, '年', ''), '月', ''), '日', ''), "@@@@/@@/@@")), "yyyymmdd"),
IIf (a.date Like '[1-9][0-9][0-9][0-9]年(0[1-9]|1[012])月(0[1-9]|[12][0-9]|3[01])日', Format(CDate(Format(Replace(Replace(Replace(a.date, '年', ''), '月', ''), '日', ''), "@@@@/@@/@@")), "yyyymmdd"),
IIf (a.date Like '[1-9][0-9][0-9][0-9]年[1-9]月(0[1-9]|[12][0-9]|3[01])日', Format(CDate(Format(Replace(Replace(Replace(a.date, '年', ''), '月', ''), '日', ''), "@@@@/@@/@@")), "yyyymmdd"),
IIf (a.date Like '[1-9][0-9][0-9][0-9]年(0[1-9]|1[012])月(0[1-9]|[12][0-9]|3[01])日', Format(CDate(Format(Replace(Replace(Replace(a.date, '年', ''), '月', ''), '日', ''), "@@@@/@@/@@")), "yyyymmdd"),
IIf (a.date Like '[1-9][0-9][0-9][0-9]年[1-9]月(0[1-9]|[12][0-9]|3[01])', Format(CDate(Format(Replace(Replace(a.date, '年', ''), '月', ''), "@@@@/@@/@@")), "yyyymmdd"),
IIf (a.date Like '[1-9][0-9][0-9][0-9]/(0[1-9]|1[012])/(0[1-9]|[12][0-9]|3[01])', Format(CDate(Format(Replace(Replace(a.date, '/', ''), '/', ''), "@@@@/@@/@@")), "yyyymmdd"),
IIf (a.date Like '[1-9][0-9][0-9][0-9]/(0[1-9]|1[012])/(0[1-9]|[12][0-9]|3[01])', Format(CDate(Format(Replace(Replace(a.date, '/', ''), '/', ''), "@@@@/@@/@@")), "yyyymmdd"),
''
)
)
)
)
)
)
)
)
FROM a
以上、何卒よろしくお願いいたします。
お礼
今回は回答していただきましてありがとうございました。多忙で確認をするのが遅れてしまいましたことをお詫びいたします。今後もよろしくお願い致します。