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

समग्र प्रकार की सरणी के लिए सही वाक्यविन्यास

सलाह अब तक इष्टतम नहीं है। एक सरल समाधान और वास्तव में लागू स्पष्टीकरण है।
संदेह में, बस आपको दिखाने के लिए Postgres से पूछें :

CREATE TEMP TABLE pencil_count (  -- table also registers row type
  pencil_color varchar(30)
, count integer
);

CREATE TEMP TABLE pencils (
  id serial
, pencils_ pencil_count[]
);

2 बुनियादी पंक्तियाँ सम्मिलित करें:

INSERT INTO pencil_count VALUES ('red', 1), ('blue', 2);

मूल पंक्ति प्रकार . के लिए सिंटैक्स देखें :

SELECT p::text AS p_row FROM pencil_count p;

  p_row
----------
 (red,1)
 (blue,2)

पंक्तियों की सरणी . के लिए सिंटैक्स देखें :

SELECT ARRAY(SELECT p FROM pencil_count p)::text AS p_row_arr;

       p_row_arr
------------------------
 {"(red,1)","(blue,2)"}

आपको केवल प्रत्येक पंक्ति शाब्दिक को दोहरे उद्धरण चिह्नों में संलग्न करना है - जो केवल अल्पविराम के विशेष अर्थ को अक्षम करने के लिए आवश्यक है प्रत्येक पंक्ति प्रकार के भीतर।
अतिरिक्त (बच निकले) दोहरे उद्धरण निरर्थक शोर होंगे, जबकि कोई अतिरिक्त विशेष वर्ण नहीं हैं।

इनमें से किसी का भी <स्ट्राइक>एस्केप स्ट्रिंग सिंटैक्स से कोई लेना-देना नहीं है , जिसे बंद कर दिया गया है पोस्टग्रेज 9.1 के बाद से डिफ़ॉल्ट रूप से। आपको E . उपसर्ग करके स्पष्ट रूप से एस्केप स्ट्रिंग सिंटैक्स घोषित करना होगा , जैसे E'string\n' . लेकिन ऐसा करने का कोई अच्छा कारण नहीं है।

db<>fiddle यहां
पुराना sqlfiddle

अधिक स्पष्टीकरण के साथ संबंधित उत्तर:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मेरा PostgreSQL डेटाबेस डिस्क स्थान से बाहर है

  2. Heroku Postgres:यह कनेक्शन बंद कर दिया गया है

  3. pgAdmin त्रुटि - संबंध [फ़ंक्शन/दृश्य/ट्रिगर फ़ंक्शंस का नाम] मौजूद नहीं है

  4. OUT पैरामीटर वाले फ़ंक्शन से लौटना

  5. क्या आप CREATE TABLE परिभाषा में एक इंडेक्स बना सकते हैं?