2010-08-24 8 views
5

सेट @whereCond = @whereCond + 'और नाम की तरह' '%' '+ @name +' '%' ''sp_executesql में की तरह उपयोग करना

वहाँ कुछ गड़बड़ यहाँ है? मैं शर्त कहां उत्पन्न करता हूं, मैं इसे sp_executesql के साथ निष्पादित करता हूं, लेकिन मुझे कुछ भी मिला। जब मैं स्पैम के बिना एक ही चीज़ चुनता हूं, तो ठीक है।

sp_executesql में LIKE का उपयोग कैसे करें? क्या आप कुछ उदाहरण ला सकते हैं?

धन्यवाद।

अद्यतन

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] 

पहले क्वेरी रिटर्न मूल्यों, दूसरा एक कुछ भी वापस नहीं करता है।

क्या अंतर है?

उत्तर

14

मेरे लिए निम्न कार्य

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] 

मुझे लगता है कि समस्या कहीं और ही होनी चाहिए।

संपादित करें: अपने अद्यतन के बाद आप इसे खड़ा के रूप में आप वास्तविक सबस्ट्रिंग @name

+0

युक्त मैं अपनी स्क्रिप्ट की जाँच की है और यह काम कर रहा है पाठ के लिए खोज रहे हैं

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

उपयोग करने की आवश्यकता है, लेकिन मेरा काम नहीं करता मैंने अपना प्रश्न संपादित कर लिया है। धन्यवाद। – hgulyan

+1

काम करता है। मदद के लिए धन्यवाद। – hgulyan

संबंधित मुद्दे