सलाह अब तक इष्टतम नहीं है। एक सरल समाधान और वास्तव में लागू स्पष्टीकरण है।
संदेह में, बस आपको दिखाने के लिए 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
उप>
अधिक स्पष्टीकरण के साथ संबंधित उत्तर:
- सिंगल के साथ टेक्स्ट डालें PostgreSQL में उद्धरण
- पोस्टग्रेज फंक्शन में कस्टम टाइप ऐरे को कैसे पास करें
- PL/pgSQL पंक्तियों की सरणीए>