有没有办法检查PL / SQL中的值列表是否为NULL
?
我有一些类似的东西:
SELECT * FROM myTable t WHERE t.dataId IN (:myList) OR :myList IS NULL
在运行时,将
:myList
符号替换为字符串列表,例如SELECT * FROM myTable t WHERE t.dataId IN ('a', 'b', 'c') OR ('a', 'b', 'c') IS NULL
我已经意识到
('a', 'b', 'c') IS NULL
是无效的PL / SQL,所以我想知道是否还有另一种方法来检查评估为NULL
的值列表。我尝试模仿的行为会将
('a', 'b', 'c')
评估为NOT NULL
。我试图避免创建另一个变量(例如:myListFlag),如果列表为空,它将返回''
。 最佳答案
也许COALESCE
可以帮助您:
它评估从左到右的值列表,并返回第一个值NOT NULL
。如果所有值都是NULL
,它将求值为NULL
,这是一个可以检查IS NULL
的值。
SELECT * FROM myTable t WHERE t.dataId IN (:myList) OR COALESCE(:myList) IS NULL