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

use*_*662 3 sql oracle procedures

在Oracle程序中使用像"where 0 = 0"这样的语句我有点困惑吗?有人可以澄清一下吗?即使我们是为动态选择而做的,为什么即使我们在查询中追加实际条件,我们也会添加这个语句?这个条件会对结果集产生什么影响吗?我经历了 如何选择列包含字符串中任何单词的所有行?但我完全理解使用"where 0 = 0"的原因.有人可以告诉我使用这种情况的正当理由吗?

提前致谢..;)

Dmi*_*nko 5

我们使用0 = 0或通常1 = 1作为存根:

select *
  from My_Table
 where 1 = 1
Run Code Online (Sandbox Code Playgroud)

因此,当您编写过滤器时,可以通过添加/注释掉单行来完成:

-- 3 filters added
select *
  from My_Table
 where 1 = 1
   and (Field1 > 123) -- 1st
   and (Field2 = 456) -- 2nd 
   and (Field3 like '%test%') -- 3d
Run Code Online (Sandbox Code Playgroud)

比如,下一个版本将删除两个过滤器:

-- 3 filters added, 2 (1st and 3d) removed
select *
  from My_Table
 where 1 = 1
   -- and (Field1 > 123) -- <- all you need is to comment out the corresponding lines
   and (Field2 = 456)
   -- and (Field3 like '%test%')
Run Code Online (Sandbox Code Playgroud)

现在让我们以非常简单的方式恢复3D过滤器:

-- 3 filters added, 2 (1st and 3d) removed, then 3d is restored
select *
  from My_Table
 where 1 = 1
   -- and (Field1 > 123) 
   and (Field2 = 456)
   and (Field3 like '%test%') -- <- just uncomment
Run Code Online (Sandbox Code Playgroud)