我想从数据库中找出名称以A到M开头的名称,或者是否有任何方法可以在通配符(LIKE)中使用多个参数,例如 -
SELECT name
FROM database
WHERE name LIKE (I want to search A to M here);
答案 0 :(得分:0)
SELECT name FROM database WHERE name LIKE '[A-M]'
答案 1 :(得分:0)
答案 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会更喜欢全表扫描。