【发布时间】:2016-11-23 17:26:23
【问题描述】:
有什么办法可以在sql的IN子句中使用范围。
我有一个场景,列中的值如下:
BIN_1_1
111111 - 222222
用户输入一个值,例如; 111134,我需要检查输入的值是否在列值的范围内。
有没有什么方法可以在里面使用IN语句和使用between呢?
FOR i in (select * from V_CUS_SEG_BIN_RANGE) LOOP
IF v_input1 IN
(REGEXP_SUBSTR(i.bin_1_1, '[^-]+', 1, 1), REGEXP_SUBSTR(i.bin_1_1, '[^-]+', 1, 2)
THEN
dbms_output.put_line('Duplicate!');
END LOOP;
我得到了用 RegEx 分隔的值,但我可以使用 between 来比较值是否在范围之间。
【问题讨论】:
-
不,
in不是这样工作的。只需使用>=和<=。 -
我该如何嵌入 >= 和
-
如果
111111和222222位于INT的不同列中,这会容易得多。事实上,任何东西都可以在允许值111111 - 222222的列中,这使得解决这个问题的许多方法非常脆弱。