1
create or replace function MyFunction(v_FileName in varchar2)

v_FileName の 2 文字目に特殊文字を使用できないようにしたい。

これらの文字は次のとおりです。

!@#$%^&*()_+=`~[]{}'\|?/><,;:

(. と " の使用を許可したい)

いくつかの regexp_like 式を試しましたが、うまくいきませんでした。例:

DECLARE
  vResult NUMBER DEFAULT NULL;
BEGIN    
  select case when regexp_like('d[av inder 1234' ,'^[[:alnum:]]([^[:alnum:]]|\"+|\.+)') then 0 else 1 end into vintResult from dual;
  dbms_output.put_line('result: '||vintResult);
END;

出力:

result: 1

char [ は許可されていないはずなので、結果は 0 にする必要があります。

私は何を間違っていますか?

4

2 に答える 2

1

このように単純に使用することもできます。

a を使用し[]て、一致させる必要がある文字のグループを定義します

select case when regexp_like('d''v inder 1234' ,'^.[][!@#$%^&*()_+=`~{}''\|?/><,;:].*') then 0 else 1 end from dual;
于 2016-01-13T11:18:44.887 に答える