Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर में एक स्ट्रिंग से बचें ताकि LIKE अभिव्यक्ति में उपयोग करना सुरक्षित हो

LIKE एक्सप्रेशन में विशेष वर्णों से बचने के लिए आप उन्हें एक एस्केप वर्ण के साथ उपसर्ग करते हैं। आपको ESCAPE कीवर्ड के साथ उपयोग करने के लिए कौन सा एस्केप चार चुनना है। (एमएसडीएन रेफरी)

उदाहरण के लिए यह % प्रतीक से बच जाता है, \ का उपयोग एस्केप चार के रूप में करता है:

select * from table where myfield like '%15\% off%' ESCAPE '\'

यदि आप नहीं जानते कि आपकी स्ट्रिंग में कौन से वर्ण होंगे, और आप उन्हें वाइल्डकार्ड के रूप में नहीं मानना ​​चाहते हैं, तो आप सभी वाइल्डकार्ड वर्णों को एस्केप चार के साथ उपसर्ग कर सकते हैं, जैसे:

set @myString = replace( 
                replace( 
                replace( 
                replace( @myString
                ,    '\', '\\' )
                ,    '%', '\%' )
                ,    '_', '\_' )
                ,    '[', '\[' )

(ध्यान दें कि आपको अपने एस्केप चार से भी बचना होगा, और सुनिश्चित करें कि यह आंतरिक replace है ताकि आप दूसरे से जोड़े गए replace . से बच न सकें बयान)। फिर आप कुछ इस तरह इस्तेमाल कर सकते हैं:

select * from table where myfield like '%' + @myString + '%' ESCAPE '\'

अपने @myString चर के लिए अधिक स्थान आवंटित करना भी याद रखें क्योंकि यह स्ट्रिंग प्रतिस्थापन के साथ लंबा हो जाएगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Windows 10 UWP ऐप से SQL सर्वर डेटाबेस से कैसे कनेक्ट करें

  2. SQL सर्वर (T-SQL उदाहरण) में 'डेटाटाइमऑफ़सेट' को 'डेटाटाइम' में बदलें

  3. मैं डेटाबेस ट्रिगर को रिकर्सिंग से कैसे रोकूं?

  4. SQL सर्वर - sp_spaceused के आंतरिक भाग को विच्छेदित करें

  5. क्वेरी, संग्रहीत कार्यविधियों और ट्रिगर के लिए SQL सर्वर प्रदर्शन संकेतक को लागू करना