使用 ISNULL 或“LIKE”

the*_*ner 1 sql t-sql sql-server

我有一个存储过程,它接受一些可能为 NULL 或可能不是 NULL 的参数。

如果我有一个明确的参数值,我可以使用 ISNULL 选项,但是如果我想使用“LIKE”而不是 null,我不知道该怎么做。见下文:

参数是:

@org_id as int,
@deleted as bit = NULL,
@firstname as char = NULL,
@lastname as char = NULL
Run Code Online (Sandbox Code Playgroud)

选择语句是:

select user_id, firstname,lastname,firstname +' ' + lastname as fullname, email, phone,     is_tech, is_admin,is_cust
from users 
where users.org_id=@org_id and is_tech=1 and delete_flag=ISNULL(@deleted,delete_flag)
order by lastname,firstname asc
Run Code Online (Sandbox Code Playgroud)

如果 firstname 和 lastname 参数不为空,而是一个字符,例如“J”,我怎么能写一些类似于 delete_flag 子句的东西..and firstname like 'J%' 但如果不使用 null?

有任何想法吗?

Ham*_*yan 5

你可以使用这个:

WHERE field LIKE @param OR @param IS NULL
Run Code Online (Sandbox Code Playgroud)