Sql server 比如ISNULL%不起作用

Sql server 比如ISNULL%不起作用,sql-server,stored-procedures,Sql Server,Stored Procedures,我有一个带有简单查询的SP: @first_name nvarchar(50) = null AS BEGIN Select * from empTable where first_name like %ISNULL(@first_name, first_name)% END 我想做的是,如果用户在@first\u name中输入一个值,那么查询应该像Select*from empTable where first\u name一样“%John%” 如果用户没有输入name,我应该能够返回所有

我有一个带有简单查询的SP:

@first_name nvarchar(50) = null
AS
BEGIN
Select * from empTable where first_name like %ISNULL(@first_name, first_name)%
END
我想做的是,如果用户在@first\u name中输入一个值,那么查询应该像Select*from empTable where first\u name一样“%John%”

如果用户没有输入name,我应该能够返回所有内容——就像没有where条件一样

它一直告诉我我的SP中有语法错误

请尝试:

@first_name nvarchar(50) = null
AS
BEGIN
Select * from empTable where first_name like '%' + ISNULL(@first_name, first_name) + '%'
END
尝试:


如果为空,则不能在上放置通配符。如果您的@first_name在运行时仍然为空,您应该使用不同的语句。如果为NULL,则不能在其上放置通配符。如果@first_name在运行时仍然为空,则应该使用不同的语句。