首页 > 解决方案 > 正则表达式在 LIKE 条件下不起作用

问题描述

我目前正在使用 Oracle SQL 开发人员,并且正在尝试编写一个查询,该查询将允许我搜索所有类似于某个值但始终与其不同的字段。

SELECT last_name FROM employees WHERE last_name LIKE 'Do[^e]%';

所以我追求的结果是:给我所有以“Do”开头但不是“Doe”的姓氏。

我从一般 SQL 基础书籍中得到方括号方法,所以我假设任何 SQL 数据库都应该能够运行它。

这是我的第一篇文章,如果我的问题不够清楚,我很乐意澄清。

标签: sqloracle

解决方案


在Oracle 中LIKE没有正则表达式可以使用。但是你可以使用REGEXP_LIKE.

SELECT * FROM EMPLOYEES WHERE REGEXP_LIKE (Name, '^Do[^e]');

模式的^开头将其锚定到比较字符串的开头。换句话说,字符串必须以要匹配的模式开头。最后不需要通配符,因为字符串末尾没有锚(应该是$)。而且您似乎已经知道 的含义[^e]


推荐阅读