如何在 oracle 10g 中使用带方括号的 like 运算符与 table 中的记录进行比较?

How to compare with records in a table using like operator with square brackets in oracle 10g?

select * from emp where ename like '[bsp]%';

它将通过将 ename 列中每个记录的首字母与 MS SQL 服务器中的 b、s 和 p 进行比较来显示输出。

如何使用带有单个 like 运算符的 oracle 10g 实现相同的输出?

SQL 中的 LIKE 运算符仅支持两种通配符:% 用于任意数量的字符,_ 仅用于一个字符。它不支持正则表达式。 Microsoft 的 T-SQL 中的 LIKE 运算符扩展了 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 提供的简单 "range" 表达式非常不同(并且更复杂)。

另一种表达方式是:

select *
from emp
where lower(substring(ename, -1)) in ('b', 's', 'p');