2010-06-21 10 views
0

Comment afficher les détails de l'employé dont le nom contient les mêmes caractères à la position de début et de fin de leur nom?Oracle sql fonction question

+0

Smells comme les devoirs ... –

+0

indice de devoirs: recherchez la fonction instr et voyez si vous pouvez l'utiliser d'une manière ou d'une autre dans votre requête ou peut-être faire quelque chose d'intelligent avec regexp. – Rene

Répondre

3

Il existe deux façons d'utiliser SUBSTR() pour identifier une partie de l'ENAME. L'approche plus orthodoxe fonctionne sur la base que le passage d'une valeur négative que les comptes décalés par rapport à la fin de la chaîne:

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

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

SQL> 

Juste pour des grimaces, je comprend la deuxième approche qui utilise la fonction REVERSE() sans papier :

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> 

Dans 10g et plus nous pouvons également résoudre cela avec des expressions régulières:

SQL> select ename 
    2 from emp 
    3 where regexp_substr(ename,'^.') = regexp_substr(ename,'.$') 
    4/

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

SQL>