Oracle sql函数问题

时间:2010-06-21 08:11:21

标签: sql oracle oracle9i

如何在名称的开头和结尾显示姓名包含相同字符的员工的详细信息?

1 个答案:

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