2012-12-05 9 views
11

हैलो मेरे पास एक प्रश्न है जहां मैं खाली होने पर निर्भर करता हूं कि मैं दो क्षेत्रों में से किसी एक के मूल्य का चयन करना चाहता हूं।PostgreSQL: रिक्त स्थान के आधार पर दो फ़ील्ड में से एक का चयन करें

$complete_field = $field1 == '' ? $field2 : $field1; 

मैं कैसे PostgreSQL में यह करना होगा:

field1 and field2 

मैं उन्हें के रूप में complete_field

IF field1 is empty, then complete_field is field2 
ELSE complete_field is field1 

PHP में चयन करने के लिए इसे पसंद किया जा होगा करना चाहते हैं?

मैंने कोशिश की:

SELECT 
(IF field1 = '' THEN field2 ELSE field1) AS complete_field 
FROM 
table 

लेकिन यह does not काम।

कृपया मेरी मदद करो :) धन्यवाद

+1

'COALESCE (फ़ील्ड 1, field2) के रूप में the_field My_table से चयन करें;' काम करेगा अगर खेतों शून्य थे। क्या वे वास्तव में नल होने की बजाय तार खाली कर रहे हैं? – wildplasser

उत्तर

17

उपयोग CASE WHEN .. THEN .. ELSE .. END, उदा .:

SELECT 
(CASE WHEN (field1 IS NULL OR field1 = '') THEN field2 ELSE field1 END) 
FROM table; 

the official docs इसे यहां देखें।

2

एएनएसआई एसक्यूएल फ़ंक्शन कोलेसेस() वह है जो आप चाहते हैं।

select Coalesce(field1,field2) 
from table; 
+0

स्पष्ट रूप से 'field1' एक खाली स्ट्रिंग हो सकता है, जिस स्थिति में ओपी अपना मान नहीं चाहता है, बल्कि इसके बजाय 'फ़ील्ड 2' का मान। –

+1

उह। हाल ही में ओरेकल से परिवर्तित किया गया है और मुझे यह खाली-स्ट्रिंग-न-नल-नल मालार्की पसंद नहीं है। –

14

COALESCENULLIF साथ प्रयास करें:

SELECT COALESCE(NULLIF(field1, ''), field2) AS the_field FROM my_table; 
संबंधित मुद्दे