2009-08-12 8 views
1

je la requête de recherche SQL suivante:SQL LIKE Trouver la requête

ALTER PROCEDURE [EmployeeSearch] 
@PayrollNumber varchar(50) = null, 
@isInternal  bit = null, 
@Firstname  varchar(50) = null, 
@Surname  varchar(50) = null 
AS 
SET NOCOUNT ON; 
Select EmployeeSearchView.* 
From EmployeeSearchView 
Where 
EmployeeSearchView.isInternal = @isInternal 
AND 
(EmployeeSearchView.PayrollNumber LIKE '%' + @PayrollNumber + '%' 
OR EmployeeSearchView.Firstname LIKE '%' + @Firstname + '%' 
OR EmployeeSearchView.Surname LIKE '%' + @Surname + '%' 

Le seul problème est lorsque le prenom Nom est envoyé par une chaîne vide « » il renvoie les mauvaises valeurs ... si je passe Valeurs nulles cela fonctionne ... comment puis-je résoudre cette requête?

Merci!

Répondre

1

Pourriez-vous en ajouter un autre et une clause pour vérifier les chaînes vides?

ALTER PROCEDURE [EmployeeSearch] 
@PayrollNumber varchar(50) = null, 
@isInternal    bit = null, 
@Firstname    varchar(50) = null, 
@Surname    varchar(50) = null 
AS 
SET NOCOUNT ON; 
Select EmployeeSearchView.* 
From EmployeeSearchView 
Where 
EmployeeSearchView.isInternal = @isInternal 
AND 
(EmployeeSearchView.PayrollNumber LIKE '%' + @PayrollNumber + ' %' 
OR (@Firstname <> '' AND EmployeeSearchView.Firstname LIKE '%' + @Firstname + ' %') 
OR (@Surname <> '' AND EmployeeSearchView.Surname LIKE '%' + @Surname + ' %') 
0
ALTER PROCEDURE [EmployeeSearch] 
@PayrollNumber varchar(50) = null, 
@isInternal    bit = null, 
@Firstname    varchar(50) = null, 
@Surname    varchar(50) = null 
AS 
SET NOCOUNT ON; 

IF (IsNull(@FirstName, '') = '') 
    SET @FirstName = '%' 
ELSE 
    SET @FirstName = '%' + @FirstName + '%'; 
END 

IF (IsNull(@Surname, '') = '') 
    SET @Surname = '%' 
ELSE 
    SET @Surname = '%' + @Surname + '%'; 
END 

Select EmployeeSearchView.* 
From EmployeeSearchView 
Where 
EmployeeSearchView.isInternal = @isInternal 
AND 
(EmployeeSearchView.PayrollNumber LIKE '%' + @PayrollNumber + '%' 
AND EmployeeSearchView.Firstname LIKE @Firstname 
AND EmployeeSearchView.Surname LIKE @Surname 
Questions connexes