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

मैं SQL में उद्धरणों से कैसे निपटूं?

एस्केप कैरेक्टर 'है, इसलिए आपको उद्धरण को दो उद्धरणों से बदलना होगा।

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

SELECT * FROM PEOPLE WHERE SURNAME='O'Keefe'

बन जाता है

SELECT * FROM PEOPLE WHERE SURNAME='O''Keefe'

उस ने कहा, यह स्वयं करना शायद गलत है। SQL में उपयोग के लिए स्ट्रिंग्स से बचने के लिए आपकी भाषा में एक फ़ंक्शन हो सकता है, लेकिन इससे भी बेहतर विकल्प पैरामीटर का उपयोग करना है। आमतौर पर यह निम्नानुसार काम करता है।

आपका SQL कमांड होगा:

SELECT * FROM PEOPLE WHERE SURNAME=?

फिर, जब आप इसे निष्पादित करते हैं, तो आप "O'Keefe" को एक पैरामीटर के रूप में पास करते हैं।

क्योंकि पैरामीटर मान सेट होने से पहले SQL को पार्स किया जाता है, पैरामीटर मान के लिए SQL की संरचना को बदलने का कोई तरीका नहीं है (और यदि आप एक ही कथन को अलग-अलग पैरामीटर के साथ कई बार चलाना चाहते हैं तो यह थोड़ा तेज़ है)।

मुझे यह भी बताना चाहिए कि, जबकि आपका उदाहरण सिर्फ एक त्रुटि का कारण बनता है, आप अपने आप को कई अन्य समस्याओं के लिए खोलते हैं, उचित रूप से स्ट्रिंग्स से बचकर नहीं। देखें http://en.wikipedia.org/wiki/SQL_injection एक अच्छी शुरुआत के लिए या निम्न क्लासिक xkcd कॉमिक के लिए ।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sqlplus में त्रुटियां कैसे दिखाएं

  2. Oracle में रोमन अंकों के रूप में संख्याओं को कैसे प्रारूपित करें

  3. Oracle 12C में LISTAGG के साथ विशिष्ट मान प्राप्त करें

  4. वृद्धिशील डेटाबेस परिवर्तन का पता लगाना (Oracle to MongoDB ETL)

  5. ORA-12514 TNS:श्रोता वर्तमान में कनेक्ट डिस्क्रिप्टर में अनुरोधित सेवा के बारे में नहीं जानता है