按范围选择表格值

时间:2018-08-17 09:53:17

标签: sql oracle

在我的表中,我有主键id。它是两个字节的varchar类型。 如果id从00到89,则返回一组数据,否则返回不同的数据。我在存储过程中的查询是

BEGIN
select * from MyTable where (id like '0%' or
                             id like '1%' or
                             id like '2%' or
                             id like '3%' or
                             id like '4%' or
                             id like '5%' or
                             id like '6%' or
                             id like '7%' or
                             id like '8%') 
                             and status = 'active'
union all
select * from MyTable where id like '9%' and status='inactive'
END

我的问题是如何改善它?我可以使用>89<90将字符串转换为数字吗?

2 个答案:

答案 0 :(得分:5)

您还可以使用正则表达式:

select * from MyTable
where REGEXP_LIKE(id, '^[0-8][0-9]') and status='active'
or REGEXP_LIKE(id, '^9[0-9]') and status='inactive'

答案 1 :(得分:1)

怎么样:

select * from mytable
where  ( id <  '9' and status = 'active' )
or     ( id >= '9' and status = 'inactive' )