2013-04-06 9 views
6

मैं पोस्टग्रेस के साथ PostgreSQL का उपयोग कर रहा हूं। मैं इस तरह की एक क्वेरी निष्पादित कर रहा हूं:फ़ंक्शन के अंदर SQL क्वेरी

select st_geomfromtext('point(22 232)',432) 

यह ठीक काम करता है। लेकिन अब मैं एक प्रश्न के माध्यम से एक मूल्य लेना चाहता हूँ। उदाहरण के लिए:

select st_geomfromtext('point((select x from data_name where id=1) 232)' , 432) 

यहाँ data_name कुछ तालिका मैं उपयोग कर रहा हूँ और x भंडार कुछ मान है। अब अंदर पूछताछ एक स्ट्रिंग के रूप में माना जाता है और कोई मूल्य वापस नहीं किया जाता है।
कृपया मदद करें।

ERROR: syntax error at or near "select" 
+0

संकेत:: कैसे आप PostgreSQL में दो तार जोड़ करते

select st_geomfromtext(NULL, 432)

आप एक ड्रॉप में प्रतिस्थापन की जरूरत है? – muratgu

+0

|| तारों को संयोजित करने के लिए प्रयोग किया जाता है लेकिन अभी भी एक ही त्रुटि को – Naman

+0

@muratgu '||' या फ़ंक्शन का उपयोग करके फेंक दिया गया है: 'concat' – Houari

उत्तर

2

इस प्रयास करें:

select st_geomfromtext('point(' || x || ' 232)', 432) from data_name where id=1 
0

PostGIS एक समारोह ST_MakePointST_GeomFromText की तुलना में तेजी है कि है।

select ST_SetSRID(ST_MakePoint(x),432) from data_name where id=1; 
0

जबकि @muratgu answerआम तौर पर जाने का रास्ता है, एक छोटी सी टिप्पणी:
एक सबक्वेरी आप एक अलग परिणाम जब कोई पंक्ति id = 1 के लिए पाया जाता है हो जाता है। तो फिर तुम कुछ भी नहीं वापस की बजाय (कोई पंक्ति) मिलता है,:

select st_geomfromtext('point(' 
         || (select x from data_name where id=1) 
         || ' 232)' , 432) 
संबंधित मुद्दे