以下包含 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]$');
我正在尝试查找不以元音开头和结尾的员工名字。我想出了上述问题。现在我有两个问题:
执行上述语句return 有效输出(不以元音开头)。
执行上述语句 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
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]$');
我正在尝试查找不以元音开头和结尾的员工名字。我想出了上述问题。现在我有两个问题:
执行上述语句return 有效输出(不以元音开头)。
执行上述语句 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