2017-03-20 39 views
-1

我想知道怎麼做取決於@FirstName@LastName(價值一WHERE語句中的IF聲明,如果它是null 這裏是我的代碼:如何做一個搜索查詢

SELECT tblCustomers.CustomerFirstName, tblCustomers.CustomerLastName FROm tblCustomers 
    where CustomerFirstName = @FirstName and CustomerLastName = @LastName 
+2

匹配嗎? – Shruti

+0

如果參數爲空,它是否應該返回所有內容? –

+0

更具體的你的情況 –

回答

1

我以爲你是在尋找這樣的:

SELECT tblCustomers.CustomerFirstName, tblCustomers.CustomerLastName 
FROM tblCustomers 
WHERE CustomerFirstName = COALESCE(@FirstName, CustomerFirstName) 
AND CustomerLastName = COALESCE(@LastName, CustomerLastName) 

這樣,如果一個參數是空的where子句會忽略它
請ñ。注意它不會返回列爲空的任何行。

如果您的列可以爲空,並且您想要將它們爲空的行重新渲染,那麼您需要使用Bennjoe Mordeno的答案中的where子句。

0
SELECT tblCustomers.CustomerFirstName, tblCustomers.CustomerLastName FROm tblCustomers 
where (CustomerFirstName = @FirstName OR @FirstName IS NULL) and (CustomerLastName = @LastName OR @LastName IS NULL) 

如果該參數爲null,它沒有什麼需要做的,如果任何一個變量的值是空列

1
Use CASE Statement in WHERE Clause : 

SELECT tblCustomers.CustomerFirstName, tblCustomers.CustomerLastName 
FROM tblCustomers 
WHERE CustomerFirstName = CASE 
     WHEN ISNULL(@FirstName,'') <> '' THEN @FirstName ELSE CustomerFirstName END AND CustomerLastName = WHEN ISNULL(@LastName,'') <> '' THEN @LastName ELSE CustomerLastName END