在 SQL IN 子句中使用 between
Using between in the SQL IN clause
有什么方法可以在 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 来比较这些值是否在范围之间。
您可以在 BETWEEN 条件中使用 REGEXP_SUBSTR 调用的结果,例如:
IF v_input1 BETWEEN REGEXP_SUBSTR(i.bin_1_1, '[^-]+', 1, 1)
AND REGEXP_SUBSTR(i.bin_1_1, '[^-]+', 1, 2) OR
v_input1 BETWEEN REGEXP_SUBSTR(i.bin_1_2, '[^-]+', 1, 1)
AND REGEXP_SUBSTR(i.bin_1_2, '[^-]+', 1, 2) OR
v_input1 BETWEEN REGEXP_SUBSTR(i.bin_1_3, '[^-]+', 1, 1)
AND REGEXP_SUBSTR(i.bin_1_3, '[^-]+', 1, 2)
THEN
...whatever...
END IF;
祝你好运。
有什么方法可以在 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 来比较这些值是否在范围之间。
您可以在 BETWEEN 条件中使用 REGEXP_SUBSTR 调用的结果,例如:
IF v_input1 BETWEEN REGEXP_SUBSTR(i.bin_1_1, '[^-]+', 1, 1)
AND REGEXP_SUBSTR(i.bin_1_1, '[^-]+', 1, 2) OR
v_input1 BETWEEN REGEXP_SUBSTR(i.bin_1_2, '[^-]+', 1, 1)
AND REGEXP_SUBSTR(i.bin_1_2, '[^-]+', 1, 2) OR
v_input1 BETWEEN REGEXP_SUBSTR(i.bin_1_3, '[^-]+', 1, 1)
AND REGEXP_SUBSTR(i.bin_1_3, '[^-]+', 1, 2)
THEN
...whatever...
END IF;
祝你好运。