如何在名称的开头和结尾显示姓名包含相同字符的员工的详细信息?
答案 0 :(得分:3)
有两种方法可以使用SUBSTR()来识别ENAME的一部分。更正统的方法是基于将负值作为偏移计数从字符串的 end 开始:
SQL> select ename
2 from emp
3 where substr(ename,1,1) = substr(ename,-1,1)
4 /
ENAME
----------
TROMBONIST
SQL>
只是为了笑容,我包含了第二种使用未记录的REVERSE()函数的方法:
SQL> select ename, reverse(ename)
2 from emp
3 where substr(ename,1,1) = substr(reverse(ename),1,1)
4 /
ENAME REVERSE(EN
---------- ----------
TROMBONIST TSINOBMORT
SQL>
在10g及更高版本中,我们也可以使用正则表达式来解决这个问题:
SQL> select ename
2 from emp
3 where regexp_substr(ename,'^.') = regexp_substr(ename,'.$')
4 /
ENAME
----------
TROMBONIST
SQL>