は、私はいくつかのテーブルを削除すると、この手順を書いた:PL/SQLのREGEXP_LIKEフィルタ
アイデアは、このようなテーブル名のパターンですべてのテーブルをドロップすることですset serveroutput on
declare
type namearray is table of varchar2(50);
total integer;
name namearray;
begin
--select statement here ..., please see below
total :=name.count;
dbms_output_line(total);
for i in 1 .. total loop
dbms_output.put_line(name(i));
-- execute immediate 'drop table ' || name(i) || ' purge';
End loop;
end;
/
:しかし
ERROR_REPORT[2 digit][3 Capital characters][10 digits]
example: ERROR_REPORT16MAY2014122748
、私は正しいregexpを考え出すことができません。
select table_name bulk collect into name from user_tables where regexp_like(table_name, '^ERROR_REPORT[0-9{2}A-Z{3}0-9{10}]');
結果は、私は必要なすべてのテーブル名が含まれてプラスERROR_REPORT311AUG20111111111:以下は私のselect文と結果があります。これは結果に表示されるべきではありません。
次のステートメントは同じ結果を示しました。これは、A-Z {3}が正規表現に影響を与えないことを意味していました。
select table_name bulk collect into name from user_tables where regexp_like(table_name, '^ERROR_REPORT[0-9{2}0-9{10}]');
私の質問は正しいregexpとは何か、私の問題は何ですか?
おかげで、
アレックス
のおかげであることを示していると仮定してきました!そうですか。 \ dはどうですか? \ dは[0-9]と同じですか? – user1941319
\ dの質問は無視してください。 – user1941319