需要編寫一個存儲過程,將搜索基於可選參數表使用SQL Server 2008我如何在存儲過程中實施SQL搜索功能(SQL Server 2008中)
將有兩種模式
- 基本的搜索模式(我們只是通過一些文本)
高級搜索模式(可選參數用於不SEARCHTEXT使用。)
爲了測試我使用A dventureWorks.Person.Contact表
你會寫下類似如下如果不是你可以提出建議如何改善它? 非常感謝
ALTER PROCEDURE SearchPeople @SearchText nvarchar(200)=NULL, --- only used in basic search mode @SearchMode bit, @FirstName varchar(50)=NULL, @LastName varchar(50)=NULL, @EmailAddress varchar(50)=NULL, @Phone nvarchar(25)=NULL
AS
IF @SearchMode=0
BEGIN
print 'BASIC SEARCH'
SELECT *
FROM [Person].[Contact]
WHERE (FirstName LIKE '%' + @SearchText + '%'
OR LastName LIKE '%' + @SearchText + '%'
OR EmailAddress LIKE '%' + @SearchText + '%'
OR Phone LIKE '%' + @SearchText + '%')
END
ELSE
BEGIN
print 'ADVANCED SEARCH'
SELECT *
FROM [Person].[Contact]
WHERE (FirstName [email protected] OR @FirstName IS NULL)
AND (LastName [email protected] OR @FirstName IS NULL)
AND (EmailAddress [email protected] OR @EmailAddress IS NULL)
AND (Phone [email protected] OR @Phone IS NULL)
END
@Sadhir:是的。在評論[我的答案](http://stackoverflow.com/questions/4138227/how-can-i-implement-sql-search-functionality-in-a-stored-procedure-sql-server-2/4138273# 4138273),我只是將OP指向Gail Shaw關於[catch-all queries]的博客文章(http://sqlinthewild.co.za/index.php/2009/03/19/catch-all-queries/)以幫助他了解他的高級搜索技術的問題。 – 2010-11-09 20:56:02
感謝您的答覆。在sql一邊生鏽。偶爾的問題什麼是「哪裏1 = 1做?我也看到你正在建立一個查詢如何執行它在最後?我需要搜索的6個參數準確感謝您的幫助 – user9969 2010-11-09 20:58:17
是的,剛剛看到您的評論,這看起來像一個偉大的博客文章,肯定會檢查出來 – Sadhir 2010-11-09 20:59:10