Sql Oracle:Oracle8i中类REGEXP_函数的替代方案

Sql Oracle:Oracle8i中类REGEXP_函数的替代方案,sql,regex,oracle,oracle8i,Sql,Regex,Oracle,Oracle8i,我有一个SQL在where子句中使用类似REGEXP_的函数,现在我需要在Oracle8i中运行该函数的等效函数 正则表达式如下所示: where REGEXP_LIKE(parm, '^[PMF][[:digit:]]+[_].*') 提前感谢。不幸的是,在REGEXP_之前,情况相当严峻。在倾盆大雨中,我们不得不用手来做这件事。这样的事情可能是必要的: WHERE SUBSTR(parm,1,1) IN ('P','M','F') AND digits_followed_by_unders

我有一个SQL在where子句中使用类似REGEXP_的函数,现在我需要在Oracle8i中运行该函数的等效函数

正则表达式如下所示:

where REGEXP_LIKE(parm, '^[PMF][[:digit:]]+[_].*')

提前感谢。

不幸的是,在REGEXP_之前,情况相当严峻。在倾盆大雨中,我们不得不用手来做这件事。这样的事情可能是必要的:

WHERE SUBSTR(parm,1,1) IN ('P','M','F')
AND digits_followed_by_underscore(SUBSTR(parm,2)) = 'Y'
使用以下程序(警告:匆忙拼凑,未测试):

你可以试试

WHERE SUBSTR(parm,1,1) IN ('P','M','F')
AND substr(parm,2,1) between '0' and '9'
AND substr(ltrim(substr(parm,2),'0123456789'),1,1) = '_'
第一个字符是p、M或F。 第二个字符是数字 第二个字符(从左边去除所有数字)应以下划线开头


请拍摄你的8i数据库。不仅8i不受支持,9i和10g也不受支持(或者至少它们处于“降级,请停止使用它们”的支持级别)。

在谷歌搜索中,似乎有一个名为OWA_模式的软件包早在8i就可用了。它提供了相当多的正则表达式支持。它显然是PL/SQLWebToolkit安装的一部分。它可能在8i安装中可用,也可能不可用。与DBA一起检查数据库

那是指它

WHERE SUBSTR(parm,1,1) IN ('P','M','F')
AND substr(parm,2,1) between '0' and '9'
AND substr(ltrim(substr(parm,2),'0123456789'),1,1) = '_'