If else in select query oracle

vmpqdwk3  于 2023-05-16  发布在  Oracle
关注(0)|答案(1)|浏览(181)

我在SQL过程中有一个变量v_brand。如果该变量不为null,则

select * from table where column1 = someValue and brandColumn = v_brand;

如果变量为null

select * from table where column1 = someValue;

我能想到的最好的办法就是

IF v_brand IS NOT NULL THEN

 select * from table where column1 = someValue and brandColumn = v_brand;

ELSE

select * from table where column1 = someValue;

END IF:

我将使用的查询有数百行。有没有一种方法可以合并这两个查询,因为它似乎更易于维护。

2nbm6dog

2nbm6dog1#

您可以使用某些条件逻辑合并这两个查询

SELECT *
FROM table
WHERE column1 = someValue
AND (brandColumn = v_brand OR v_brand IS NULL);

检查v_brand是否=brandColumn或NULL

  • v_brand为NULL + OR返回true(查询返回column 1等于someValue的所有行--与brandColumn无关)
  • v_brand not NULL --(brandColumn = v_brand)将被计算(true--将返回该行--如果为false -- AND将为false +行将从结果集中排除)

相关问题