sql查询里面的like问题

比如有很多数据,我想查以12或者13或者34或者55等等很多有限的组合开头的数据,我知道可以写成select * from table where a like '12%' or a like '13%' or a like '34%' or a like '55%'.......,这种有没有办法组合成一个条件,我知道有种写法是 a like '[1|3]%',这样可以查1或者3开头的数据,但是写成a like '[12|13]%'就不是查12或者13开头的数据了,sql里面的这个竖线没有用到过,网上也没有怎么查到。。有高手可以指点下吗?谢谢啦!!!抱歉,没有分了。

第1个回答  2014-04-01
Select * from table where left(a,2) in ('12','13','34','55')
因为不知道你用哪一种数据库,可能没有left函数,若没有,你可以配合对应数据库语法的函数追问

用的sqlServer,有left函数。因为在这个字段上面建了索引,所以我想用like的方式,当然,你这样也是可以的,但是这样就用不到索引了,这个查询数据量很大

追答

追求性能就别改了,Or多几次也没什么问题,也方便以后修改!

第2个回答  2014-04-01
select * from table where substr(a,1,2) in ('12','13','34','55',....);
substr是oracle的截取字符串函数,其他数据库不可用的话找相关截取字符串函数吧
这样是不是换个思路了呢??
望采纳追问

因为在这个字段上面建了索引,所以我想用like的方式,当然,你这样也是可以的,但是这样就用不到索引了,这个查询数据量很大

追答

a like '[1|3]%'
这个'[1|3]%'中的 '[1|3]’用条件函数去实现,后面接再接上 ||‘%’
用case when case when end.类似if else if else if else .......

本回答被提问者采纳
相似回答