Oracle REGEX functions



我在Oracle 10gR2上工作。

我正在处理存储用户名的列。假设这一列中的一个值是"Ankur"。我想获取所有记录,其中用户名是"Ankur"的串联字符串,后面跟着一些数字,如"Ankur1","Ankur2","Ankur345"等。我不想获得值为"Ankurab1"的记录-这是一些字符连接到我的输入字符串的任何东西。

我尝试使用REGEX函数来实现所需的结果,但无法。

I was trying:

SELECT 1 FROM dual WHERE regexp_like ('Ankur123', '^Ankur[:digit:]$');
这里有人能帮我吗?

Oracle使用POSIX EREs(不支持常见的d简写),因此您可以使用

^Ankur[0-9]+$

你的版本也几乎可以工作:

^Ankur[[:digit:]]+$

一组[...]用于字符类,另一组用于[:digit:]子集。当然,+允许不止一个数字

你差一点了

试试regexp_like ('Ankur123', '^Ankur[[:digit:]]+$')

注意[[而不是单个[, +$前面。

如果没有+, regexp只匹配String Ankur后的一个数字。

最新更新