CASE 子句中的 SQL WHERE 表达式

时间:2021-05-11 16:58:50

标签: sql

我想从包含两个字段 Itemname 的表 nullable_name 中获取数据,第二个可以为空。

现在我想添加一个过滤字符串,以便只获取包含该字符串的结果(如果 name 为空,则在 nullable_name 字段中,在 nullable_name 字段中如果存在)。所以我希望根据情况使用两个 WHERE 表达式之一。

我尝试过但没有用的:

SELECT * FROM Item
WHERE
CASE 
    WHEN Item.nullable_name IS NULL THEN (Item.name LIKE '%filter%')
    ELSE (Item.nullable_name LIKE '%filter%')
END

2 个答案:

答案 0 :(得分:1)

你似乎想要coalesce()

where coalesce(item.nullable_name, item.name) like '%filter%'

coalesce() 是一个返回第一个非 NULL 值的函数。

答案 1 :(得分:0)

试试 其中 isnull(item.nullable_name, item.name) 像 '%filter%'

相关问题