Oracle SQL Case with Null

1zmg4dgp  于 2023-06-05  发布在  Oracle
关注(0)|答案(1)|浏览(150)

我有一个简单的查询,它从绑定变量中获取输入。

CREATE TABLE "FRUITS" 
(   "FRUIT_NAME" VARCHAR2(100), 
"COLOR" VARCHAR2(100)
) ;

insert into fruits (fruit_name, color)
values ('Banana', 'Yellow')
insert into fruits (fruit_name, color)
values ('Lemon', '')
insert into fruits (fruit_name, color)
values ('Apple', 'Red')

SELECT * FROM FRUITS
WHERE
COLOR =     case
            when :P1_ITEM is null then null
            else :P1_ITEM
            end

如果输入是“黄色”,结果将是“香蕉”(当“红色”时,然后是“苹果”)。然而,如果输入恰好为空,则结果为“未找到数据”。知道null不是null值,如何避免这种情况?如果输入的颜色为空,那么我如何返回空颜色行?表示'Lemon' + null
谢谢

0h4hbjxa

0h4hbjxa1#

这样的事情可能是一个选择:

SELECT * FROM FRUITS
WHERE
nvl(COLOR, 'x') = case
                    when :P1_ITEM is null then 'x'
                    else :P1_ITEM
                  end;

相关问题