2013-11-08 2 views
2

Я пытаюсь использовать хранимую процедуру для поиска данных.Сохраненная процедура с использованием Where with if else

ALTER PROCEDURE [dbo].[SP_Something] 
(
@Search_Text VARCHAR(4000), 
@FILTER INT 
) 
AS 
BEGIN 
SELECT Customer_Information 

FROM Customer 
LEFT OUTER JOIN Something K ON K.Something _Id= Something_Id2 

LEFT OUTER JOIN Something3 KS ON KS.Something_Id =Something_Id3 

WHERE 

// If @FILTER=1 i want to search below 

Customer_İnformation LIKE '%' + @Search_Text + '%' 

// If @FILTER=2 i want to search below 

Customer_name LIKE '%' + @Search_Text + '%' 

// If @FILTER=3 i want to search below 

Customer_Adress LIKE '%' + @Search_Text + '%' 

Как я могу использовать Где с If условиях?

Любая помощь будет полезна

Спасибо.

+1

использование 'случай, когда то ... else' логика – Milen

ответ

2
ALTER PROCEDURE [dbo].[SP_Something] 
(
    @Search_Text VARCHAR(4000), 
    @FILTER INT 
) 
AS 
BEGIN 
    SELECT Customer_Information 
    FROM Customer 
    LEFT OUTER JOIN Something K 
      ON K.Something _Id= Something_Id2 
    LEFT OUTER JOIN Something3 KS 
      ON KS.Something_Id =Something_Id3 
    WHERE 
     (Filter = 1 AND Customer_İnformation LIKE '%' + @Search_Text + '%') 
     OR 
     (Filter = 2 AND Customer_name LIKE '%' + @Search_Text + '%') 
     OR 
     (Filter = 3 AND Customer_Adress LIKE '%' + @Search_Text + '%') 
END 
0
ALTER PROCEDURE [dbo].[SP_Something] 
(
    @Search_Text VARCHAR(4000), 
    @FILTER INT 
) 
AS 
BEGIN 
    SELECT Customer_Information 
    FROM Customer 
    LEFT OUTER JOIN Something K ON K.Something _Id= Something_Id2 
    LEFT OUTER JOIN Something3 KS ON KS.Something_Id =Something_Id3 
    WHERE 
    CASE @FILTER 
    WHEN 1 THEN Customer_İnformation 
    WHEN 2 THEN Customer_Name 
    WHEN 3 THEN Customer_Address 
    END LIKE '%' + @Search_Text + '%'; 
END 
Смежные вопросы