以下包含 REGEXP_LIKE() 的 SQL 查询有什么区别?

What is the difference between following SQL queries containing REGEXP_LIKE()?

select distinct first_name 
from EMPLOYEES 
where regexp_like(first_name,'^[^AEIOU]*[^aeiou]$');    

select distinct first_name 
from EMPLOYEES 
where regexp_like(first_name,'^[^AEIOU].*[^aeiou]$');  

我正在尝试查找不以元音开头和结尾的员工名字。我想出了上述问题。现在我有两个问题:

  1. 执行上述语句return 有效输出(不以元音开头)。

  2. 执行上述语句 return 总是得到相同的结果(我尝试时得到相同的结果)。

但是当我尝试以下两个查询时,它们给出了彼此不同的输出

select distinct first_name 
from EMPLOYEES 
where regexp_like(first_name,'^[AEIOU]*[aeiou]$');    

select distinct first_name 
from EMPLOYEES 
where regexp_like(first_name,'^[AEIOU].*[aeiou]$');         

1) 前两个查询没有给您有效的输出。它们匹配以小写元音开头或以大写元音结尾的名称。而且他们并不总是给出相同的结果:

  • 马科斯是第一和第二的比赛
  • MARCOS 匹配第二个而不是第一个
  • allan 是两者的匹配

2) 由于类似的原因,第二对呈现不同的输出。

你可以自己试试:Regular expressions 101