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>