select * from name where name like "%a%" and name like "%e%" 应该还有更高效的吧
select * from tb where name like '%a%' and name like '%e%'
select * from tb where name like '%a%' and name like '%e%'
确实like "%a%" and name like "%e%" 不太高效了,特别是表大时当然只有知道更详细的信息才能提高效率了, 比如说, 如果知道'a','e'是name的首字母, 可用: where name<'b' --'a'的情况 or (name>'d' and name<'f') --'e'的情况又如,如果'a'是在第X个位置,'e'是在第Y个位置 可以这样写, where SUBSTRING(name,X,1)<Concat(Substring(name,1,X-1),'b') --'a'的情况 or (SUBSTRING(name,Y,1)>Concat(Substring(name,1,Y-1),'d') and SUBSTRING(name,Y,1)<Concat(Substring(name,1,Y-1),'f')) --'e'的情况按照类似的思想去做就可以了,对于大表是会快很多的
应该还有更高效的吧
*
from
tb
where
name like '%a%'
and
name like '%e%'
比如说,
如果知道'a','e'是name的首字母,
可用:
where name<'b' --'a'的情况
or (name>'d' and name<'f') --'e'的情况又如,如果'a'是在第X个位置,'e'是在第Y个位置
可以这样写,
where SUBSTRING(name,X,1)<Concat(Substring(name,1,X-1),'b')
--'a'的情况
or (SUBSTRING(name,Y,1)>Concat(Substring(name,1,Y-1),'d') and SUBSTRING(name,Y,1)<Concat(Substring(name,1,Y-1),'f'))
--'e'的情况按照类似的思想去做就可以了,对于大表是会快很多的