Оператор на языке SQL поддерживает только две подстановочные знаки: %
для любого количества символов и _
для одного символа. Он не поддерживает регулярные выражения. Оператор LIKE в Microsoft T-SQL расширяет стандарт SQL и предлагает поддержку регулярных выражений бедных.
В Oracle вы должны использовать правильное регулярное выражение:
select *
from emp
where regexp_like(ename, '[bsp]$', 'i');
Для получения более подробной информации обратитесь к руководству: http://docs.oracle.com/cd/B19306_01/server.102/b14200/conditions007.htm#i1048942
Обратите внимание, что регулярные выражения, используемые regexp_like()
очень разные (и более сложные), чтобы простое выражение «диапазон», которое предлагает T-SQL.
Другой способ выразить это будет:
select *
from emp
where lower(substring(ename, -1)) in ('b', 's', 'p');
Второй подход работает очень хорошо. Спасибо. Но где мы используем квадратные скобки в оракуле – Mathis
@Mathis: см. Мой первый пример: в (реальном) регулярном выражении –