Sql 使用ISNULL或";例如;

Sql 使用ISNULL或";例如;,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个存储过程,它接受一些参数,这些参数可能是NULL,也可能不是 如果我有一个参数的明确值,我可以使用ISNULL选项,但是如果我想使用“LIKE”而不是null,我不知道怎么做。见下文: 参数包括: @org_id as int, @deleted as bit = NULL, @firstname as char = NULL, @lastname as char = NULL Select语句是: select user_id, firstname,lastname,firstnam

我有一个存储过程,它接受一些参数,这些参数可能是NULL,也可能不是

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

参数包括:

@org_id as int,
@deleted as bit = NULL,
@firstname as char = NULL,
@lastname as char = NULL
Select语句是:

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
如果firstname和lastname参数不是null,而是一个字符,例如“J”,我如何编写类似于delete_flag子句..和firstname(例如“J%”)的内容,但如果不使用null

有什么想法吗?

你可以用这个:

WHERE field LIKE @param OR @param IS NULL
您可以使用以下选项:

WHERE field LIKE @param OR @param IS NULL

当你拥有的不仅仅是上面的东西时,请确保在这两个部分周围放置参数。Hmmm..似乎也没有使用参数..其中users.org\u id='at'org\u id and is\u tech=1 and delete\u flag=ISNULL('at'deleted,delete\u flag)和(firstname如'at'firstname或'at'firstname为null)..我执行SP并只传入组织id,但当我传入例如“D”作为名字时,什么也不显示,我知道有一个用户的名字以“D”开头@枪手什么不起作用?如果可能,在上显示查询,并显示测试数据。根据@param的构造方式,可能需要将其嵌入“%”中。示例:其中包含类似“%”+param+“%”或param的字段NULL@thegunner-
类似于“D”
匹配“D”<代码>如“D%”匹配任何以“D”开头的字符串。有关模式,请参见。您可以将该模式作为包含通配符的参数传递,也可以在查询中添加通配符。当您拥有的不仅仅是上面的内容时,请确保在这两个部分周围放置参数。Hmmm..似乎也不使用参数..where users.org\u id='at'org\u id and is_tech=1 and delete\u flag=ISNULL('at'deleted,delete\u flag)和(firstname如'at'firstname或'at'firstname为空)…我执行SP并只传入组织id,但当我传入例如“D”作为firstname时,什么也没有出现,我知道有一个用户的firstname以“D”开头@Gunner什么不起作用?如果可能,在测试数据上显示查询。根据@param的构造方式,您可能需要将其嵌入到“%”中。例如:“%”+param+“%”或param等字段的位置NULL@thegunner-
类似“D”
匹配“D”。
类似“D%”
匹配任何以“D”开头的字符串。有关模式,请参阅。您可以将模式作为包含通配符的参数传递,或者在查询中添加通配符。