ORACLE-在通配符中使用多个参数的方式(LIKE)

时间:2013-12-12 05:46:55

标签: sql oracle

我想从数据库中找出名称以A到M开头的名称,或者是否有任何方法可以在通配符(LIKE)中使用多个参数,例如 -

SELECT name
FROM database 
WHERE name LIKE (I want to search A to M here);

4 个答案:

答案 0 :(得分:0)

SELECT name FROM database WHERE name LIKE '[A-M]'

答案 1 :(得分:0)

使用REGEXP_LIKE,请参阅here以获取更多详细信息。

试试这个,

SELECT name FROM database WHERE REGEXP_LIKE(name, '^[A-M]');

答案 2 :(得分:0)

尝试:

select ...
where  ... substr(name,1,1) between 'A' and 'M'

可能你想:

select ...
where  ... upper(substr(name,1,1)) between 'A' and 'M'

这确实具有可以索引的优势,尽管索引可能只用于更小的范围。

答案 3 :(得分:0)

无需使用substr或regexp_like等。

以下语句更简单(并且具有可以使用普通索引的优点):

SELECT name FROM database WHERE name >= 'A' AND name < 'N';

此查询的工作原理是'AA'&gt; 'A'和所有以'M'开头的字符串在'N'之前排序。

就索引使用而言,我假设你想要将字母表的一半作为第一个字母,你也将查询总行数的一半,因此Oracle会更喜欢全表扫描。