sql - 正则表达式在 LIKE 条件下不起作用
问题描述
我目前正在使用 Oracle SQL 开发人员,并且正在尝试编写一个查询,该查询将允许我搜索所有类似于某个值但始终与其不同的字段。
SELECT last_name FROM employees WHERE last_name LIKE 'Do[^e]%';
所以我追求的结果是:给我所有以“Do”开头但不是“Doe”的姓氏。
我从一般 SQL 基础书籍中得到方括号方法,所以我假设任何 SQL 数据库都应该能够运行它。
这是我的第一篇文章,如果我的问题不够清楚,我很乐意澄清。
解决方案
在Oracle 中LIKE
没有正则表达式可以使用。但是你可以使用REGEXP_LIKE
.
SELECT * FROM EMPLOYEES WHERE REGEXP_LIKE (Name, '^Do[^e]');
模式的^
开头将其锚定到比较字符串的开头。换句话说,字符串必须以要匹配的模式开头。最后不需要通配符,因为字符串末尾没有锚(应该是$
)。而且您似乎已经知道 的含义[^e]
。
推荐阅读
- java - 创建 Java 模型类
- python - 处理 exec 内部函数以进行符号计算
- javascript - 带有“OR”运算符的三元运算符不起作用?
- java - (java字符串连接)这是怎么给这个异常的?
- c# - 应用程序之间共享的身份 - 身份框架 C#.NET
- linux - Tiltbrush Poly 无法在 Linux 中工作
- docker - 如何在远程 Windows 引擎上运行 Docker 命令
- dynamics-crm - Dynamics 365 中视图的动态参数
- java - java.lang.RuntimeException:失败:HTTP 错误代码:400
- google-cloud-platform - 将 csv 从云存储导入云 sql 时服务帐户的访问被拒绝(权限问题?)