我有一个正则表达式抛出ORA-12733,“正则表达式太长”.如何确定支持的最大大小是多少?
仅供参考:违规正则表达式为892个字符.它是一个生成的正则表达式,所以我可以改变生成和执行它的方式,但我想知道在更改生成和执行方式之前,最大大小的限制是什么.
(运行Oracle 10.2g)
更新:
如果它取决于实际的正则表达式,这里是它的开头(其余的重复是同样的事情,在^和$之间有不同的值):
(^ R_1A $| ^ R_2A $| ^ R_3A $| ^ R_4A $| ^ R_4B $| ^ R_5A $| ^ R_5B $…
查看正则表达式函数的文档,REGEXP_SUBSTR,REGEXP_INSTR& REGEXP_REPLACE它对模式有以下引用:
pattern is the regular expression. It is usually a text
literal and can be of any of the
datatypes CHAR,VARCHAR2,NCHAR,or
NVARCHAR2. It can contain up to 512
bytes. If the datatype of pattern is
different from the datatype of
source_char,Oracle Database converts
pattern to the datatype of
source_char. For a listing of the
operators you can specify in
pattern`**
取自here