我对以下查询中的结果为何如此显示感到困惑。以下是employees表中的姓氏列表:
Abel
Davies
De Haan
Ernst
Fay
Geraldo
Gietz
Grant
Hartstein
Higgins
Hunold
King
Kochhar
Lorentz
Matos
Mourgos
Rajs
Taylor
Vargas
Whalen
Zlotkey
以下查询返回员工的姓氏以及REGEXP_SUBSTR操作,以查找姓氏后带有一个或多个a的姓氏:
SQL> select last_name, regexp_substr(last_name,'a+',1,1,'i')
2 from employees;
LAST_NAME REGEXP_SUBSTR(LAST_NAME,'
------------------------- -------------------------
Abel A
Davies a
De Haan aa
Ernst
Fay a
Geraldo a
Gietz
Grant a
Hartstein a
Higgins
Hunold
King
Kochhar a
Lorentz
Matos a
Mourgos
Rajs a
Taylor a
Vargas a
Whalen a
Zlotkey
为什么只有一个“ a”而不是另一个“ a”时,上述查询为什么返回子字符串的值?
此外,以下查询是相同的,但查找姓氏中出现零个或多个'a':
SQL> select last_name, regexp_substr(last_name,'a*',1,1,'i')
2 from employees;
LAST_NAME REGEXP_SUBSTR(LAST_NAME,'
------------------------- -------------------------
Abel A
Davies
De Haan
Ernst
Fay
Geraldo
Gietz
Grant
Hartstein
Higgins
Hunold
King
Kochhar
Lorentz
Matos
Mourgos
Rajs
Taylor
Vargas
Whalen
Zlotkey
为什么上面的查询仅返回Abel的子字符串?它不应该显示其中包含“ a”的姓氏的子字符串吗?
请帮助我理解为什么这些查询的行为方式与它们相同。
编辑:我正在使用Oracle Database 12c
答案 0 :(得分:1)
两个问题合在一起。...