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

PostgreSQL में सिंगल कोट्स के साथ टेक्स्ट डालें

स्ट्रिंग अक्षर

एकल उद्धरणों से बचना ' उन्हें दोगुना करके -> '' निश्चित रूप से मानक तरीका और कार्य है:

'user's log'     -- incorrect syntax (unbalanced quote)
'user''s log'

प्लेन सिंगल कोट्स (ASCII / UTF-8 कोड 39), माइंड यू, बैकटिक्स नहीं ` , जिसका Postgres में कोई विशेष उद्देश्य नहीं है (कुछ अन्य RDBMS के विपरीत) और डबल-उद्धरण नहीं " , पहचानकर्ताओं के लिए उपयोग किया जाता है।

पुराने संस्करणों में या यदि आप अभी भी standard_conforming_strings = off के साथ चलते हैं या, आम तौर पर, यदि आप अपनी स्ट्रिंग को E . के साथ जोड़ते हैं Posix एस्केप स्ट्रिंग सिंटैक्स घोषित करने के लिए , आप बैकस्लैश से भी बच सकते हैं \ :

E'user\'s log'

बैकस्लैश स्वयं एक और बैकस्लैश से बच निकला है। लेकिन यह आम तौर पर बेहतर नहीं है।
यदि आपको कई एकल उद्धरण या भागने की कई परतों से निपटना है, तो आप PostgreSQL में डॉलर-उद्धृत स्ट्रिंग्स के साथ नरक को उद्धृत करने से बच सकते हैं। :

'escape '' with '''''
$$escape ' with ''$$

डॉलर-उद्धरणों के बीच भ्रम से बचने के लिए, प्रत्येक जोड़ी में एक अद्वितीय टोकन जोड़ें:

$token$escape ' with ''$token$

जिसे किसी भी स्तर पर नेस्ट किया जा सकता है:

$token2$Inner string: $token1$escape ' with ''$token1$ is nested$token2$

ध्यान दें अगर $ आपके क्लाइंट सॉफ़्टवेयर में वर्ण का विशेष अर्थ होना चाहिए। इसके अलावा आपको इससे बचना पड़ सकता है। मानक PostgreSQL क्लाइंट जैसे psql या pgAdmin के साथ ऐसा नहीं है।

यह सब plpgsql फ़ंक्शंस या एड-हॉक SQL कमांड लिखने के लिए बहुत उपयोगी है। जब उपयोगकर्ता इनपुट संभव हो, तो यह आपके आवेदन में SQL इंजेक्शन के खिलाफ सुरक्षा के लिए तैयार कथन या किसी अन्य विधि का उपयोग करने की आवश्यकता को कम नहीं कर सकता है। @ क्रेग का जवाब उस पर अधिक है। अधिक विवरण:

  • पोस्टग्रेज फ़ंक्शन बनाम तैयार क्वेरी में SQL इंजेक्शन

पोस्टग्रेज के अंदर के मान

डेटाबेस के अंदर मूल्यों के साथ व्यवहार करते समय, स्ट्रिंग्स को ठीक से उद्धृत करने के लिए कुछ उपयोगी कार्य होते हैं:

  • quote_literal() या quote_nullable() - बाद वाला स्ट्रिंग आउटपुट करता है NULL शून्य इनपुट के लिए। (quote_ident() भी है करने के लिए दोहरा-उद्धरण तार जहां मान्य SQL पहचानकर्ता प्राप्त करने की आवश्यकता है ।)
  • format() प्रारूप विनिर्देशक के साथ %L quote_nullable() . के बराबर है .
    पसंद करें:format('%L', string_var)
  • <स्ट्राइक> concat() या <स्ट्राइक>concat_ws() आमतौर पर इस उद्देश्य के लिए अच्छा नहीं है क्योंकि वे नहीं करते हैं नेस्टेड सिंगल कोट्स और बैकस्लैश से बचें।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पोस्टग्रेज में डेटाबेस कैसे स्विच करें?

  2. Postgres कॉलम या टेबल नामों को कब उद्धरणों की आवश्यकता होती है और कब नहीं?

  3. PostgreSQL में ऑटो इंक्रीमेंट प्राथमिक कुंजी कैसे सेट करें?

  4. डेटाबेस के भीतर केवल एक तालिका से सम्मिलित विवरण प्राप्त करने के लिए pg_dump का उपयोग करना

  5. PostgreSQL में पावर () फ़ंक्शन कैसे काम करता है