2013-01-09 15 views
42

मैं एक कथन लिखने की कोशिश कर रहा था जो कहां '% टेक्स्ट%' खंड का उपयोग करता है, लेकिन जब मैं पाठ के पैरामीटर का उपयोग करने का प्रयास करता हूं तो मुझे परिणाम प्राप्त नहीं होते हैं। उदाहरण के लिए, इस काम करता है:टी-एसक्यूएल और जहां% पैरामीटर% खंड

SELECT Employee WHERE LastName LIKE '%ning%' 

यह वापसी होगी उन Flenning, मैनिंग, Ningle, आदि लेकिन इस बयान नहीं होगा:

DECLARE @LastName varchar(max) 
SET @LastName = 'ning' 
SELECT Employee WHERE LastName LIKE '%@LastName%' 

कोई परिणाम नहीं मिला। कोई सुझाव? अग्रिम में धन्यवाद।

उत्तर

93

यह होना चाहिए:

... 
WHERE LastName LIKE '%' + @LastName + '%'; 
बजाय

:

... 
WHERE LastName LIKE '%@LastName%' 

या इस:

... 
WHERE LastName LIKE Concat('%',@LastName,'%') 
+1

धन्यवाद प्रश्न पर पहले की नोक के लिए। लेकिन यह हालांकि नहीं था। वैसे भी [एक उच्च निष्पादन उत्तर की तलाश में - क्या यह उपयोगी है या नहीं?] (Http://stackoverflow.com/a/14243580/1389394) :) – bonCodigo

+1

@bonCodigo मुझे वास्तव में पता नहीं है, प्रदर्शन और अनुकूलन नहीं है मेरा क्षेत्र। इसके अलावा, ये कार्य विक्रेता विशिष्ट हैं, आपके मामले में यह निर्भर करता है कि ओरेकल आरडीबीएमएस उनका मूल्यांकन कैसे करता है, और मुझे ओरेकल नहीं पता है। माफ़ कीजिये। –

+2

यह मेरे लिए काम नहीं किया। % को एड पैरामीटर अनुभाग में होना चाहिए। यहां जेम्स क्रासन का जवाब देखें http://stackoverflow.com/questions/251276/howto-parameters-and-like-statement-sql – bendecko

14

सही जवाब, कि, क्योंकि '%' -sign का एक हिस्सा है आपकी खोज अभिव्यक्ति, यह आपके VALUE का हिस्सा होना चाहिए, इसलिए आप @LastName सेट करें TSQL एक प्रोग्रामिंग भाषा से या से यह हो) आप '%' + [userinput] + '%'

करने के लिए इसे स्थापित करना चाहिए या, अपने उदाहरण में:

DECLARE @LastName varchar(max) 
SET @LastName = 'ning' 
SELECT Employee WHERE LastName LIKE '%' + @LastName + '%' 
+1

धन्यवाद धन्यवाद धन्यवाद धन्यवाद !! –

1

आप, यह एक कोशिश कर सकते हैं इस्तेमाल किया concat

WHERE LastName LIKE Concat('%',@LastName,'%') 
संबंधित मुद्दे