使用 Oracle 的正则表达式功能来查找双元音序列,例如。 ‘ie’, ‘ee’, ‘oa’
Posted
技术标签:
【中文标题】使用 Oracle 的正则表达式功能来查找双元音序列,例如。 ‘ie’, ‘ee’, ‘oa’【英文标题】:Use the regular expression feature of Oracle to find a double vowel sequence, eg. ‘ie’, ‘ee’, ‘oa’ 【发布时间】:2012-10-07 00:02:14 【问题描述】:使用 Oracle 的正则表达式功能查找标题中包含双元音序列单词“ie”、“ee”、“oa”的所有电影。我知道这与 like 子句有关,但代码的顺序给我带来了麻烦。任何帮助表示赞赏。
“表名电影”
SELECT *
FROM movies
WHERE REGEXP_LIKE (title, ‘ie’, ‘ee’, ‘oa’);
【问题讨论】:
【参考方案1】:您已经确定了正确的函数,但您似乎不知道如何制定正则表达式。您应该在 Oracle 的上下文之外阅读一般意义上的正则表达式。正则表达式有多种方言,但是一旦你学会了一种方言,应该很容易切换到其他方言。
对于您的特定 Oracle 问题:
select * from movies where regexp_like( title, '[aeiou]2' );
【讨论】:
我认为“.*”是不必要的。如果表达式在字符串中的任何位置,则正则表达式应该匹配。 @eaolson - 你是对的,谢谢。我已经编辑了更简单形式的答案。我的脑海里正在考虑必须匹配整个字符串的标准 LIKE 运算符。 在我看来这应该可行,但我没有得到任何回报,令人费解 从头开始,我的桌子都是大写的,哈哈,谢谢你的帮助 dbenham【参考方案2】:这仅适用于 ms-sql。留下答案以防万一有人需要。
where title like '%[aeiou][aeiou]%'
【讨论】:
那是什么 Oracle 语法?我 99% 确定这行不通,但我已经与 Oracle 脱节了几年。我很想投反对票。 是的,这是 Oracle 通配符运算符 % 和正则表达式的混合体。 @dbenham 我认为这是编写此语法的标准方式。它适用于 ms-sql。我现在意识到它不适用于 Oracle 这在 Oracle 中不起作用 (docs) @CheranShunmugavel 您愿意详细说明吗?这个页面看起来非常专业和官方。我只是引用它。您因引用 oracle 的官方主页而对我投了反对票。我认为这有点苛刻。以上是关于使用 Oracle 的正则表达式功能来查找双元音序列,例如。 ‘ie’, ‘ee’, ‘oa’的主要内容,如果未能解决你的问题,请参考以下文章
在 Oracle SQL 中使用正则表达式在字符串字段中查找 Unicode 字符