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

यदि कमांड-लाइन पर निर्दिष्ट नहीं है तो केवल psql-script में वेरिएबल सेट करें

चर के लिए डिफ़ॉल्ट मान सेट करना psql में समर्थित नहीं है, लेकिन आप इसे वैकल्पिक हल का उपयोग करके कर सकते हैं।

यह psql कमांड:

\set myVar :myVar

कुछ भी नहीं करता है यदि चर पहले से ही psql के माध्यम से सेट किया गया था (इसका मतलब है, myVar फिर से उसके मान पर सेट है), अन्यथा चर को शाब्दिक रूप से स्ट्रिंग :myVar पर सेट किया गया है ।

इस परिस्थिति और अन्य psql कमांड का उपयोग करना \gset , आप वास्तव में myVar के लिए एक डिफ़ॉल्ट मान सेट कर सकते हैं। इसे आप sql स्क्रिप्ट के शीर्ष पर रखें:

\set myVar :myVar
-- now myVar is set to the string ':myVar' if was not already set.
-- Checking it using a CASE statement:
SELECT CASE 
  WHEN :'myVar'= ':myVar'
  THEN 'default_value' 
  ELSE :'myVar' 
END AS "myVar"  \gset -- < \gset call at end of the query

ऐसा लगता है कि यह केवल टेक्स्ट वेरिएबल्स के साथ काम करता है, लेकिन यदि आपको न्यूमेरिक वेरिएबल्स की आवश्यकता है तो आप न्यूमेरिक पर कास्ट कर सकते हैं:

SELECT CASE 
  WHEN :'myVar'= ':myVar'
  THEN '10' 
  ELSE :'myVar' 
END::numeric AS "myVar"  \gset

\gset कैसे काम करता है:

\gset आपको एक चुनिंदा क्वेरी के परिणाम से एक चर सेट करने की अनुमति देता है। परिणाम चर को कॉलम नाम की तरह नाम दिया गया है, यही कारण है कि आपको खंड की आवश्यकता है AS "myVar" क्वेरी के अंत में (यदि आप अपरकेस अक्षरों के साथ चर नामों का उपयोग करना चाहते हैं तो दोहरे उद्धरण चिह्नों को न भूलें)।

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

SELECT 'hello' AS var1 \gset

चर सेट करता है var1 करने के लिए hello , वही

\set var1 hello

अधिक जानकारी के लिए यहां देखें:http://www.postgresql.org /docs/9.4/static/app-psql.html



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. विशिष्ट तालिकाओं और प्रविष्टियों के लिए एक डेटाबेस डंप बनाना Postgres

  2. PostgreSQL धारावाहिक लेनदेन इसे संघर्ष के रूप में क्यों सोचता है?

  3. मैं geodjango के लिए k निकटतम पड़ोसी कैसे प्राप्त करूं?

  4. चयन आदेश के साथ INSERT INTO को पोस्टग्रेज करता है

  5. पोस्टग्रेस्क्ल डेस एन्क्रिप्ट