sql - 在 Oracle 中使用 NOT LIKE

标签 sql sql-server regex string oracle

这可能是个愚蠢的问题——我希望不是——但我仍然不明白为什么这段代码不在 Oracle 中运行而是在 MS SQL Server 中运行。

代码是:

SELECT DISTINCT CITY FROM STATION
WHERE CITY NOT LIKE '[AEIOUaeiou]%'
ORDER BY CITY ASC;

该代码在 SQL Server 中为我提供了所有不以元音开头的城市,但在 Oracle 中运行它时为我提供了所有城市。

这是为什么?

最佳答案

SQL Server 支持 LIKE 模式中的一小部分正则表达式。 Oracle 没有,但它通过 regexp_* 函数提供全面的正则表达式支持。

在这里,你可以使用regexp_like():

SELECT DISTINCT CITY FROM STATION
WHERE NOT REGEXP_LIKE(CITY, '^[aeiou]', 'i')
ORDER BY CITY ASC;

Regex ^[aeiou] 表示:字符串开头列出的字符之一('^' 代表)。第三个参数称为匹配参数:'i' 使搜索不区分大小写。

关于sql - 在 Oracle 中使用 NOT LIKE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60131574/

相关文章:

regex - 为什么列表上下文中的替换不返回捕获列表?

PHP 搜索 SQL 数据库

sql - 如何改变Rails的belongs_to行为

sql - 存储过程返回特定间隔的记录

java - 使用 hibernate 调用 SQL Server 存储过程

sql-server - 监视 SSRS 订阅错误

Python 正则表达式 : match only if the next group's value is not an empty string

mysql - 如何通过ID引用不同的表?

SQL - 根据行数限制返回的行数

Javascript 多词正则表达式