2010-06-21 43 views
0

如何在名称的开始和结束位置显示名称包含相同字符的员工的详细信息?Oracle sql函数问题

+0

气味像功课... – 2010-06-21 08:12:57

+0

作业提示:查找instr函数,看看你是否可以在你的查询中以某种方式使用它,或者用regexp做一些聪明的事情。 – Rene 2010-06-21 08:45:39

回答

3

有两种方法可以使用SUBSTR()来标识ENAME的一部分。更正统的方法效果是传递一个负值偏移计数从结束的字符串的的基础上:

SQL> select ename 
    2 from emp 
    3 where substr(ename,1,1) = substr(ename,-1,1) 
    4/

ENAME 
---------- 
TROMBONIST 

SQL> 

只是为了笑容,我包括它使用无证扭转第二种方法()函数:

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>