【问题标题】:Oracle REGEX functionsOracle 正则表达式函数
【发布时间】:2011-09-30 17:37:05
【问题描述】:

我正在开发 Oracle 10gR2。

我正在处理一个存储用户名的列。假设此列中的值之一是“Ankur”。我想获取所有记录,其中用户名是“Ankur”的连接字符串,后跟一些数字,如“Ankur1”、“Ankur2”、“Ankur345”等。我不想获取具有诸如“Ankurab1”之类的值的记录 - 这是将某些字符连接到我的输入字符串的任何内容。

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

我在尝试:

SELECT 1 FROM dual WHERE regexp_like ('Ankur123', '^Ankur[:digit:]$');

有人可以帮我吗?

【问题讨论】:

  • 我在尝试 REGEX_LIKE SELECT 1 FROM dual WHERE regexp_like ('Ankur123', '^Ankur[:digit:]$');
  • 这不起作用,因为我相信 REGEX_ 函数只需要通配符和模式来匹配和评估表达式。我不知道如何传递定义的值,然后为匹配指定通配符

标签: regex oracle


【解决方案1】:

Oracle uses POSIX EREs(不支持常用的\d简写),所以可以使用

^Ankur[0-9]+$

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

^Ankur[[:digit:]]+$

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

【讨论】:

    【解决方案2】:

    你很亲密

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

    注意[[ 而不是[$ 前面的+

    没有+,正则表达式仅匹配字符串Ankur之后的一个位。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-13
      • 2018-07-11
      • 1970-01-01
      • 2021-05-22
      • 2017-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多