2014-07-14 83 views
1

爲了整潔目的,我想在我的存儲過程(對於SQL Server 2012)中聲明搜索參數的標量值,然後在我的搜索的WHERE子句中實際使用它們。所以基本上我想這樣做:我可以在LIKE運算符使用之前爲LIKE運算符聲明通配符嗎?

CREATE PROCEDURE [test_select] 
     @firstName VARCHAR(50) 
    , @lastName VARCHAR(50) 
AS 

IF @firstName != '' 
    BEGIN 
     SET @firstName = '%' + @firstName + '%' 
    END 

IF @lastName != '' 
    BEGIN 
     SET @lastName = '%' + @lastName + '%' 
    END 

SELECT * 
    FROM [dbo].[Member] AS Member 

WHERE 
( @firstName != '' AND @firstName LIKE [Member].[FirstName]) 
OR (@lastName != '' AND @lastName LIKE [Member].[LastName] ) 

我還是有點新的SQL,所以我的問題很簡單,就是我想在這裏做會像我期望使用插入通配符在LIKE運算符中?

+1

你有語法倒退。它應該是'[Member]。[FirstName] like @ firstName' –

+0

呃,那實際上是我要問的另一個問題。感謝您指出我無法做到這一點(仍在編寫有問題的查詢)。 –

回答

1

是Like需要一個字符串。

Declare @LikeString nvarchar(max) = '%Name%' 

Select * 
From table 
Where Column Like @LikeString