Oracle sql функция вопрос

Как отобразить информацию о сотруднике, имя которого содержит одинаковые символы в начальной и конечной позиции своего имени?

1 ответ

Есть два способа сделать это, используя SUBSTR() для определения части ENAME. Более ортодоксальный подход работает на основе того, что передача отрицательного значения в качестве смещения считается от конца строки:

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>
Другие вопросы по тегам