当前位置: 代码迷 >> Oracle开发 >> 求了sql语句,该怎么处理
  详细解决方案

求了sql语句,该怎么处理

热度:41   发布时间:2016-04-24 06:45:36.0
求了sql语句
本帖最后由 ruisnow_ran 于 2014-03-31 14:26:44 编辑
表A有A、B二个字段,都是varchar2(4)的,里面存起始,截止号码。号码从0001到0000,过了0000就重新从0001排号,我现在想根据前台传过来的4位号码,用between and 查询,怎么办?

打个比方
A            B
5000    6000
6001    7000
6001    0100

前台传个6500
可以查到
6001      7000
6001      0100
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

打个比方
A            B
5000    6000
6001    7000
6001    0100

前台传个6500
可以查到
6001      7000
6001      0100

WITH test AS(
SELECT '5000' a,'6000' b FROM dual UNION ALL
SELECT '6001','7000' FROM dual UNION ALL
SELECT '6001','0100' FROM dual )
SELECT * FROM test WHERE 6500 BETWEEN a AND (CASE WHEN b<a THEN b+10000 ELSE to_number(b) END)


如果输入0050的话,还要
能查询到
6001      0100

WITH test AS(
SELECT '5000' a,'6000' b FROM dual UNION ALL
SELECT '6001','7000' FROM dual UNION ALL
SELECT '6001','0100' FROM dual )
SELECT * FROM test WHERE 0500 BETWEEN a AND (CASE WHEN b<a THEN b+10000 ELSE to_number(b) END)
 OR 0500 BETWEEN (CASE WHEN b<a THEN b-10000 ELSE to_number(b) END) AND a
  相关解决方案