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

时间:2016-02-01 14:55:04

标签: sql oracle11g 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. 上述语句是否返回有效输出(不开始和元音)。

  2. 以上语句总是返回相同的结果(我尝试时得到相同的结果)。

  3. 但是当我尝试以下两个查询时,他们相对于彼此提供了不同的输出

    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 个答案:

答案 0 :(得分:0)

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

  • Marcos是第一个和第二个匹配
  • MARCOS是第二个匹配,而不是第一个
  • allan是两者的匹配

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

您可以自己尝试:Regular expressions 101