2012-04-24 21 views
5

मैं कुछ रूपों की कोशिश की है, लेकिन the documentation की मेरी पढ़ने से इस पैटर्न '' || val1 || val1 काम करना चाहिए ... अभी तक अपने परिणाम एक खाली स्तंभ है ...Concat स्तंभों का चयन

thedb=# \d buildings_propertyvalue; 
           Table "public.buildings_propertyvalue" 
    Column |   Type   |        Modifiers        
-----------+------------------------+---------------------------------------------------------------------- 
id  | integer    | not null default nextval('buildings_propertyvalue_id_seq'::regclass) 
prop_id | integer    | not null 
place_id | integer    | not null 
float_val | double precision  | 
int_val | integer    | 
char_val | character varying(255) | 
text_val | text     | 

thedb=# select * from buildings_propertyvalue limit 10; 
id | prop_id | place_id | float_val | int_val | char_val | text_val 
-----+---------+----------+-----------+---------+----------+---------- 
798 |  3 |  170 |   |  831 |   | 
    2 |  46 |  180 |   |  0 |   | 
733 |  2 |  180 |  40 |   |   | 
737 |  10 |  180 |   |  0 |   | 
740 |  5 |  345 |  100 |   |   | 
742 |  10 |  345 |   |  0 |   | 
    11 |  2 |  170 |  50 |   |   | 
744 |  11 |  345 |   0 |   |   | 
746 |  14 |  345 |   |   | 52  | 
749 |  46 |  348 |   |  0 |   | 
(10 rows) 

thedb=# select prop_id, place_id, '' || float_val || int_val || char_val || text_val as val from buildings_propertyvalue limit 10; 
prop_id | place_id | val 
---------+----------+----- 
     3 |  170 | 
     46 |  180 | 
     2 |  180 | 
     10 |  180 | 
     5 |  345 | 
     10 |  345 | 
     2 |  170 | 
     11 |  345 | 
     14 |  345 | 
     46 |  348 | 
(10 rows) 

उत्तर

11

एक श्रृंखलाबद्ध NULL एक गैर-खाली स्ट्रिंग के साथ NULL

चूंकि आपके *_val कॉलम शून्य हैं, शायद यह हो रहा है कि क्या हो रहा है।

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

'' || COALESCE(float_val::TEXT, '') || COALESCE(int_val::TEXT, '') || COALESCE(char_val, '') || COALESCE(text_val, '') 

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

COALESCE(float_val::TEXT, int_val::TEXT, char_val, text_val, '') 

नोट PostgreSQL में है कि, कुछ अन्य इंजन के विपरीत, TEXT has no downsides compared to VARCHARTEXT और VARCHAR डेटा को अलग करने में कोई बात नहीं है।

1

किसी अन्य मूल्य के लिए एक पूर्ण मूल्य को जोड़ना एक पूर्ण उत्पादन करता है। ऐसा लगता है कि समेकित किए जा रहे कुछ कॉलम शून्य हैं, इसलिए उन्हें खाली स्ट्रिंग या कुछ अन्य प्लेसहोल्डर मान को बल देने के लिए उनके चारों ओर एक COALESCE फ़ंक्शन को लपेटने की आवश्यकता होगी।

संबंधित मुद्दे