- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Oracle SQL 中测试了一个正则表达式,发现了一些我无法理解的东西:
-- NO MATCH
SELECT 1 FROM DUAL WHERE REGEXP_LIKE ('Professor Frank', '(^|\s)Prof[^\s]*(\s|$)');
-- MATCH
SELECT 1 FROM DUAL WHERE REGEXP_LIKE ('Professor Frank', '(^|\s)Prof\S*(\s|$)');
\bProf[^\s]*\b
与
\bProf\S*\b
并有类似的结果。注意:Oracle SQL 正则表达式没有
\b
或字边界。
[^\s]*
和
\S*
在 Oracle SQL 中以相同的方式工作?
(\s|$)
最后,第一个正则表达式将匹配。
最佳答案
在 Oracle 正则表达式中,\s
确实是空格的转义序列,但不在匹配的字符集中(即 [.....]
或 [^....]
用于排除一个字符)。在匹配的字符集中,只有两个字符具有特殊含义,-
对于范围和 ]
用于关闭集合枚举。他们无法逃脱;如果匹配集中需要,]
必须始终是开头之后的第一个字符 [
(它是结束 ]
代表自己作为字符的唯一位置,并不表示匹配集的结尾),和 -
必须是第一个或最后一个(最好始终将其保留在匹配集的末尾)- 在其他任何地方都将其视为范围标记。要包含(或排除,如果使用 [^.....]
语法)一个空格,只需在匹配集中键入一个实际的物理空间。
编辑 : 我上面说的并不完全正确。匹配集中还有一个特殊字符,即^
.如果它用在第一个位置,则表示“匹配除以外的任何字符”。在任何其他位置,它代表自己。例如,'[^^]'
将匹配除 ^
之外的任何单个字符(第一个 ^
有特殊含义,第二个代表自己)。并且,一个右括号 ]
如果它是括号中的第二个字符,则代表它自己,如果第一个字符是 ^
(具有特殊含义)。也就是说,匹配除 ]
之外的任何单个字符,我们可以使用匹配模式 '[^]]'
.
关于sql - Oracle REGEXP_LIKE 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39904854/
我需要使用 regex_extract 从列中的字符串中提取数字。我在外部表上使用 Impala。 我已经检查了正则表达式,为了测试它,我还使用了 regexp_like 和 regexp_repla
我试图从一个 varchar 列中选择以一个 + 字符开头并且后面只有数字的数字。我使用了 regex_like 运算符,但它也会在结果中选择特殊字符。 预期的正确值: +369 +6589445 +
我开始对 REGEXP_LIKE 函数进行一些研究,这是我在 oracle 网站上找到的: REGEXP_LIKE is similar to the LIKE condition, except R
对正则表达式有点陌生,正在寻找一些帮助来理解一些功能。我目前正在尝试选择一些以一个单词开头,后跟一个空格,然后是几个可能的单词的数据集。 示例 1:我基本上是在寻找数据,例如 Product1 gre
任何人都知道如何在 SQLAlchemy 中使用等效的 REGEXP_LIKE ?例如,我希望能够执行以下操作: sa.Session.query(sa.Table).filter(sa.Table.
我在 Oracle SQL 中测试了一个正则表达式,发现了一些我无法理解的东西: -- NO MATCH SELECT 1 FROM DUAL WHERE REGEXP_LIKE ('Professo
我有一张大 table ,上面有电话号码。电话号码都是字符串,应该是“+9628789878”或类似的。 (“+”号后跟 9 到 13 位数字。) 用户错误发现一行包含字符串“+987+9873678
SELECT first_name, last_name FROM employees WHERE REGEXP_LIKE (first_name, '^Ste(v|ph)en$'); 以下查询返回名
我的数据库中有一组具有 VARCHAR2 列值的行,如下所示:tac903.2、tac903.24、tac903.2a、tac903.2b 如果搜索表达式中的最后一个字符是数字,我想创建一个不匹配的正
我编写了一个在 Oracle 数据库上运行的查询,该数据库使用函数 REGEXP_LIKE 从查询中过滤某些行。具体函数调用为 regexp_like(col1, '[^[:alpha:]]') 问题
我正在使用查询来检查 chr(0) 在 regexp_like 中的行为方式。 CREATE TABLE t1(a char(10)); INSERT INTO t1 VALUES('01234567
我回来了,因为我再次需要你的帮助! 以下哪一个是更好的选择? 问题是: 我有一个带有 ['DateYYYYMMDD','field1', 'field2', 'field3', 'MyField']
我试图解决 SQL 中的一个问题,但遇到了这个问题: 查询CITY的列表来自 STATION 的名字不以元音开头的表格。您的结果不能包含重复项。 我用过 regexp_like()函数使用 Oracl
我想在我的 CASE 语句中使用 REGEXP_LIKE 2 个问题 如何让 REGEXP_LIKE 在此 CASE 语句中起作用?我收到以下错误消息ORA-00904:“TRUE”:标识符无效 关于
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 关于您编写的代码问题的问题必须在问题本身中描述具体问题 — 并且包括有效代码 以重现它。参见 SSC
我有一个多标准表单,正在使用 CriteriaBuilder 来构建 sql。对于本地联系人标准,我需要使用 regexp_like 函数来搜索逗号分隔数字字符串中的数字字符串,即在字符串中搜索“23
在我的 pl/sql 脚本中,Oracle 在通过 [:upper:] 字符类语法搜索时将字母“e”视为大写。 IE。 REGEXP_LIKE('e', '[:upper:]') REGEXP_LIK
我有一个 oracle 函数,它返回电子邮件地址是否有效 CREATE OR REPLACE FUNCTION valid_email (p_email in varchar2)
我确实有一个查询需要使用 regex_like(user_id,'^.+EMP\d?$')。它在我的 SQLDeveloper 中工作得很好,并给了我想要的结果。 但是当我通过 java 中的 jdb
我想在 Oracle 数据库中使用变音符号搜索字符串,例如:输入“o”然后搜索“o”以及“o”、“ö”或“ô”。 我可以使用 native SQL 中的 REGEXP_LIKE() 函数和基本字母运算
我是一名优秀的程序员,十分优秀!