这可能是个愚蠢的问题——我希望不是——但我仍然不明白为什么这段代码不在 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/