我想从包含两个字段 Item
和 name
的表 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
答案 0 :(得分:1)
你似乎想要coalesce()
:
where coalesce(item.nullable_name, item.name) like '%filter%'
coalesce()
是一个返回第一个非 NULL
值的函数。
答案 1 :(得分:0)
试试 其中 isnull(item.nullable_name, item.name) 像 '%filter%'