2011-08-25 16 views
140

यह question also has the answer लेकिन विशेष रूप से डीबी 2 का उल्लेख करता है।मैं टी-एसक्यूएल में प्रतिशत चिह्न से कैसे बचूं?

मैं स्ट्रिंगLIKE का उपयोग कर कैसे कर सकता हूं जिसमें पहले से ही एक प्रतिशत (%) प्रतीक है? LIKE ऑपरेटर वाइल्डकार्ड को इंगित करने के लिए % प्रतीकों का उपयोग करता है।

उत्तर

210

उपयोग कोष्ठक। तो 75%

WHERE MyCol LIKE '%75[%]%' 

इस एस्केप से अधिक आसान और सबसे आरडीबीएमएस

+2

यह भी ध्यान रखें कि आप इस तरह के एक उपयोगकर्ता समारोह, संयोजन, आदि जैसे अन्य निर्माणों में एक प्रतिशत प्रतीक से बचने के लिए की जरूरत नहीं है के लिए आम है देखने के लिए –

+3

[बेहतर कार्डिनालिटी अनुमान (और इसलिए निष्पादन योजनाएं) भी दे सकते हैं] (http://stackoverflow.com/a/18696341/73226) –

+1

आप अंडरस्कोर वाइल्डकार्ड चरित्र से भी बच सकते हैं: '[_]'। तब आप ओपन स्क्वायर ब्रैकेट से कैसे बचते हैं? इस तरह: '[[]'। http://www.sqlserver2000.databases.aspfaq.com/how-do-i-search-for-special-characters-e-g-in-sql-server.html –

39

आप LIKE साथ ESCAPE कीवर्ड का उपयोग कर सकते हैं। स्ट्रिंग में मौजूदा % संकेतों में से प्रत्येक को वांछित चरित्र (उदा। '!') को केवल पूर्ववत करें और फिर क्वेरी के अंत में ESCAPE '!' (या पसंद का अपना चरित्र) जोड़ें।

उदाहरण के लिए:

SELECT * 
FROM prices 
WHERE discount LIKE '%80!% off%' 
ESCAPE '!' 

इस डेटाबेस के लिए खोज करने के लिए नहीं है और 80 (वाइल्डकार्ड) तार का एक वास्तविक हिस्से के रूप में 80% का इलाज कर देगा।

MSDN Docs for LIKE

11
WHERE column_name LIKE '%save 50[%] off!%' 
संबंधित मुद्दे