2010-08-24 38 views
5

SET @whereCond = @whereCond + 'AND name LIKE' '%' '+ @name +' '%' ''Sử dụng LIKE trong sp_executesql

Có gì sai ở đây không? Sau khi tôi tạo ra điều kiện, tôi thực hiện nó với sp_executesql, nhưng tôi đã nhận được bất cứ điều gì. Khi tôi CHỌN cùng một điều mà không có sp, nó là ok.

Cách sử dụng LIKE trong sp_executesql? Bạn có thể mang theo một số ví dụ không?

Cảm ơn bạn.

CẬP NHẬT

declare @name nvarchar(50) 

set @name = 'a' 

SELECT * 
    FROM Tbl_Persons WHERE 1 = 1 AND lastname LIKE '%a%' 

exec sp_executesql 
    N'SELECT * 
    FROM Tbl_Persons WHERE 1 = 1 AND lastname LIKE ''%@name%''', 
    N'@name nvarchar(50)', 
    @[email protected] 

truy vấn đầu tiên trả về giá trị, thứ hai không trả lại bất cứ điều gì.

Sự khác biệt là gì?

Trả lời

14

Các công trình sau đây đối với tôi

declare @name varchar(50) 

set @name = 'WAITFOR' 


exec sp_executesql 
    N'select * from sys.messages WHERE text LIKE ''%'' + @name + ''%''', 
    N'@name varchar(50)', 
    @[email protected] 

Tôi nghĩ vấn đề phải nằm ở nơi khác.

Edit: Tiếp theo cập nhật của bạn, bạn cần phải sử dụng

exec sp_executesql 
    N'SET @name = ''%'' + @name + ''%''; 
    SELECT * 
    FROM Tbl_Persons WHERE 1 = 1 AND lastname LIKE @name', 
    N'@name nvarchar(50)', 
    @[email protected] 

Khi đứng bạn đang tìm kiếm văn bản có chứa các chuỗi thực tế @name

+0

Tôi đã kiểm tra kịch bản của bạn và nó làm việc, nhưng tôi không hoạt động. Tôi đã chỉnh sửa câu hỏi của mình. cảm ơn bạn. – hgulyan

+1

Hoạt động. Cảm ơn vì sự giúp đỡ. – hgulyan

Các vấn đề liên quan