2010-07-19 15 views
5

मुझे स्पेस और पीछे वाले वाइल्डकार्ड के साथ काम करने के लिए समान कथन नहीं मिल सकता है। मेरे प्रश्न इस प्रकार है:tsql वाइल्डकार्ड और पीछे की जगह के साथ उपयोग कर?

select * from Table where Field like 'Desc_%'

डेटा अंतरिक्ष-सीमांकित जैसे, वर्णन शीर्ष, वर्णन नीचे और इतने पर है। जब मैं 'Desc_%' पैटर्न का उपयोग करता हूं तो क्वेरी काम करता है लेकिन जब मैं 'Desc%' पैटर्न का उपयोग नहीं करता हूं। क्षेत्र nvarchar (255) है।

कोई विचार?

संपादित

बाहर कर देता है डेटा टैब-सीमांकित था और जब मैं 2008 प्रबंधन स्टूडियो से एक मूल्य की नकल की यह अंतरिक्ष के लिए टैब में बदल दिया। गूंगा गलती मुझे [] टिप पसंद आया इसलिए मैंने इसे जवाब दिया। सभी को धन्यवाद, मुझे याद होगा कि ग्रिड परिणामों से प्रतिलिपि पर भरोसा न करें।

+0

क्या कोई विशिष्ट कारण है कि "जैसे 'Desc%' काम नहीं करेगा? – AllenG

+0

@AllenG - "LIKE Desc%" खुद को "Desc" (Desc-blank) तक सीमित नहीं करेगा, यह "Desc" – DaveE

+0

@DaveE - हाँ, यह होगा, लेकिन केवल एक ही चीज़ से शुरू होगा जो कि उनके कॉलम में हो सकता है, 'डेस्क टॉप', 'डेस्क बोटम', 'डेस्क इनसाइडऑट' इत्यादि, और कभी 'चार्लेमाइन के वंशज' नहीं हैं, डीएससी% की तरह उपयोग करने के लिए व्यावहारिक ब्लॉक नहीं है। यदि उनकी तालिका में उन अन्य मूल्यों को शामिल किया गया है, तो निश्चित रूप से, उन्हें एक समस्या होगी। – AllenG

उत्तर

3

मिलान करने के लिए एकल-वर्ण वर्ग सेट अप करने के लिए ब्रैकेट '[' & ']' का उपयोग करें। आपके मामले में एसक्यूएल इस तरह दिखना चाहिए: "तालिका से * का चयन करें जहां की तरह 'वर्णन []%' फील्ड"

जोड़ें: नमूना, लिंक

CREATE TABLE #findtest (mytext varchar(200)) 

insert #findtest VALUES ('Desc r') 
insert #findtest VALUES ('Descr') 

select * from #findtest where mytext like 'Desc[ ]%' 

DROP TABLE #findtest 

(1 row(s) affected) 

(1 row(s) affected) 
mytext 
-------- 
Desc r 

(1 row(s) affected) 

देखें this लेख।

+0

टिप के लिए धन्यवाद। यह काम। मुझे लोगों के समय बर्बाद करने के लिए मुझे खेद है। डेटा में एक टैब नहीं था। मैंने प्रबंधन स्टूडियो ग्रिड से मूल्य की प्रतिलिपि बनाई और यह टैब को एक स्थान में परिवर्तित कर दिया। – Steve

0

चूंकि अंडरस्कोर एक एकल वर्ण वाइल्डकार्ड है, और प्रतिशत बहु-चार वाइल्डकार्ड है, वे वही हैं ("%" और "_%")। ऐसा लगता है कि आप लगातार दो वाइल्डकार्ड मांग रहे हैं। निश्चित नहीं है कि मैं आपका प्रश्न समझता हूं, लेकिन मुझे आश्चर्य नहीं है कि यह आपके द्वारा अपेक्षित तरीके से व्यवहार नहीं करता है।

0

स्पष्ट रूप से यह बताते हुए कि आप एएससीआईआई मूल्य का उपयोग करके एक जगह चाहते हैं?

SELECT * FROM Table WHERE Field Like 'Desc' + CHAR(32) + '%' 
संबंधित मुद्दे