我在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后的一个数字。