gpt4 book ai didi

sql - 具有像 where 0=0 这样的条件的确切含义是什么?

转载 作者:行者123 更新时间:2023-12-04 22:47:32 26 4
gpt4 key购买 nike

我在 Oracle 过程中使用“where 0=0”这样的语句时有点困惑?有人可以澄清一下吗?即使我们这样做是为了动态选择,为什么即使我们在查询中附加了实际条件,我们还要添加这个语句?这个 where 条件对结果集有什么影响吗?..
我经历了
How can I Select all rows where column contain any words of a string ?
但我完全理解使用“where 0=0”的原因。
有人可以给我使用这种条件的适当理由吗?..

提前致谢..;)

最佳答案

使用动态 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;

关于sql - 具有像 where 0=0 这样的条件的确切含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18308678/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com