我想从数据库中找出哪些名称以A开头到M或者是否有任何方法在通配符(LIKE)中使用多个参数,例如:在通配符(LIKE)中使用多个参数的ORACLE方法
SELECT name
FROM database
WHERE name LIKE (I want to search A to M here);
我想从数据库中找出哪些名称以A开头到M或者是否有任何方法在通配符(LIKE)中使用多个参数,例如:在通配符(LIKE)中使用多个参数的ORACLE方法
SELECT name
FROM database
WHERE name LIKE (I want to search A to M here);
尝试:
select ...
where ... substr(name,1,1) between 'A' and 'M'
可能要:
select ...
where ... upper(substr(name,1,1)) between 'A' and 'M'
这确实有可能是可转位的优势,虽然该指数将大概只能用于更小的范围。
SELECT name FROM database WHERE name LIKE '[A-M]'
有没有必要使用substr或regexp_like或类似。
下面的语句是简单得多(而且具有可以使用普通索引的优势):
SELECT name FROM database WHERE name >= 'A' AND name < 'N';
此查询的工作是“AA”>“A”和所有字符串开头的基础上, 'M'在'N'之前排序。
就索引使用而言,我假定既然你想把字母表的一半作为第一个字母,你也将查询总行数的一半,因此Oracle会更喜欢全文索引,表扫描。
呃,在Oracle上做这个工作吗? –