SQL सर्वर एस्केप एक अंडरस्कोर


338

मैं अंडरस्कोर चरित्र से कैसे बच सकता हूं?

मैं निम्नलिखित कुछ लिख रहा हूं जहां क्लॉज और अंत में _d के साथ वास्तविक प्रविष्टियां खोजने में सक्षम होना चाहता हूं।

Where Username Like '%_d'

जवाबों:


523

LIKE के लिए T-SQL संदर्भ :

आप वाइल्डकार्ड पैटर्न के मिलान वाले अक्षरों का उपयोग शाब्दिक वर्णों के रूप में कर सकते हैं। वाइल्डकार्ड वर्ण को शाब्दिक वर्ण के रूप में उपयोग करने के लिए, कोष्ठक में वाइल्डकार्ड वर्ण संलग्न करें। निम्न तालिका LIKE कीवर्ड और [] वाइल्डकार्ड वर्णों का उपयोग करने के कई उदाहरण दिखाती है।

आपके मामले के लिए:

... LIKE '%[_]d'

ओह यार! ... अगर यह अभी भी काम नहीं करता है, तो सुनिश्चित करें कि आपके पास कॉलम सही है।
जेन्स फ्रांसेन

198

जाहिर है @Lasse समाधान सही है, लेकिन आपकी समस्या को हल करने का एक और तरीका है: टी-एसक्यूएल ऑपरेटर LIKEवैकल्पिक ESCAPE क्लॉज को परिभाषित करता है , जो आपको एक चरित्र घोषित करने की अनुमति देता है जो पैटर्न में अगले चरित्र से बच जाएगा।

आपके मामले के लिए, निम्नलिखित क्लॉज समकक्ष हैं:

WHERE username LIKE '%[_]d';            -- @Lasse solution
WHERE username LIKE '%$_d' ESCAPE '$';
WHERE username LIKE '%^_d' ESCAPE '^';

42
तस्वीर को पूरा करने के लिए: ESCAPEखंड SQL मानक का हिस्सा है और किसी भी DBMS पर काम करेगा, न कि केवल SQL सर्वर पर।
a_horse_with_no_name

2

ये समाधान पूरी तरह से समझ में आता है। दुर्भाग्य से, न तो मेरे लिए उम्मीद के मुताबिक काम किया। इसके बजाय परेशान करने की कोशिश करने के बजाय, मैं एक काम के साथ गया:

select * from information_schema.columns 
where replace(table_name,'_','!') not like '%!%'
order by table_name


0

इनमें से किसी ने भी मेरे लिए SS18 v18.0 में काम नहीं किया, इसलिए मैं कुछ इस तरह से काम करूंगा: ..

WHERE CHARINDEX('_', thingyoursearching) < 1

जहाँ मैं उनमें अंडरस्कोर के साथ तार को अनदेखा करने की कोशिश कर रहा हूँ। यदि आप उन चीजों को ढूंढना चाहते हैं जिनमें अंडरस्कोर है, तो बस इसे चारों ओर फ्लिप करें:

WHERE CHARINDEX('_', thingyoursearching) > 0

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.