Je dois écrire une procédure stockée qui recherche une table basée sur les paramètres optionnels Utilisation d'un serveur sql 2008.Comment puis-je mettre en œuvre la fonctionnalité de recherche SQL dans une procédure stockée (Sql Server 2008)
Il y aura deux modes
- mode de recherche de base (nous passons simplement un texte)
mode recherche avancée (paramètres facultatifs sont utilisés non SearchText est utilisé.)
Pour les tests J'utilise le A dventureWorks.Person.Contact table
Est-ce que vous écrirez quelque chose comme ci-dessous sinon pouvez-vous faire des suggestions pour l'améliorer? Merci beaucoup
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: Oui. Dans les commentaires sur [ma réponse] (http://stackoverflow.com/questions/4138227/how-can-i-implement-sql-search-functionality-in-a-stored-procedure-sql-server-2/4138273# 4138273), je viens de pointer le PO sur le blog de Gail Shaw sur [requêtes catch-all] (http://sqlinthewild.co.za/index.php/2009/03/19/catch-all-queries/) pour aider Il comprend les problèmes liés à sa technique de recherche avancée. –
Merci pour votre réponse.Bit rouillé sur le côté sql .Couple de questions que fait "où 1 = 1 faire? Aussi je vois que vous construisez une requête comment l'exécutez-vous à la fin? Je dois rechercher par 6 params exactement Merci pour votre aide – user9969
ouais juste vu votre commentaire.Cela ressemble à un blog formidable.Vraiment y jeter un oeil – Sadhir