我正在对传入多个变量并比较多个字段的单个表进行搜索查询。像这样:
WHERE a.callerfname LIKE @FName
AND a.callerlname LIKE @LName
AND a.callermname LIKE @MName
如果没有为其中一个字段选择任何值,则表单以 % 发送,因此该字段匹配所有结果。
一个字段是ProjectID
Guid,可能包含null
值。当我在没有选择项目的情况下进行搜索时,表单会传入空白的 Guid (000000-000 ...),然后我会CASE
像这样检查它:
AND a.projectid = CASE WHEN @ProjectId <> '00000000-0000-0000-0000-000000000000'
THEN @ProjectId
ELSE a.projectid
END
问题是如果一行有 aNULL ProjectID
它不会匹配自己。我的问题是 guid 字段中的空值匹配什么?或者,如果与 % 相比,我如何让 projectid 返回所有值,如果为 null,方式和名称会如何?