小编典典

像0 = 0这样的条件的确切含义是什么?

sql

我在Oracle过程中使用诸如“ where 0 =0”之类的语句时有些困惑?有人可以澄清一下吗?即使我们进行动态选择,即使在查询中附加了实际条件,为什么还要添加此语句呢?条件会否影响结果集?..我经历了如何选择列包含字符串中任何单词的所有行?但我完全理解使用“ where 0= 0”的原因。有人可以给我使用这种条件的正确理由吗?

提前致谢..;)


阅读 191

收藏
2021-05-23

共1个答案

小编典典

使用动态sql时,可能需要添加额外的子句,具体取决于满足某些条件。1 =
1子句在查询中没有任何意义(除了始终满足),它的唯一用途是降低用于生成查询的代码的复杂性。

例如,此伪代码

DECLARE
v_text VARCHAR2(2000) := 'SELECT * FROM table WHERE 1=1 ';
BEGIN

    IF condition_a = met THEN
    v_text := v_text ||' AND column_1 = ''A'' ';
    END IF;

    IF condition_b = also_met THEN
    v_text := v_text ||' AND column_2 = ''B'' ';
    END IF;

execute_immediate(v_text);

END;

比下面的伪代码更简单,并且随着添加更多子句,它只会变得更加混乱。

DECLARE
v_text VARCHAR2(2000) := 'SELECT * FROM table  ';
BEGIN

    IF condition_a = met THEN
    v_text := v_text ||' WHERE column_1 = ''A'' ';
    END IF;

    IF condition_b = also_met AND 
       condition_a != met THEN
    v_text := v_text ||' WHERE column_2 = ''B'' ';
    ELSIF condition_b = also_met AND 
       condition_a = met THEN
    v_text := v_text ||' AND column_2 = ''B'' ';
    END IF;

execute_immediate(v_text);

END;
2021-05-23