如何在 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');
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');