2013-01-05 11 views
19

मैं अपनी तालिका से खाली "टेक्स्ट" फ़ील्ड प्राप्त करने की कोशिश कर रहा हूं जिसे मैंने मैन्युअल रूप से pgadmin के साथ साफ़ किया है। शुरू में उन क्षेत्रों में '' था और मैं उन्हें इस तरह क्वेरी कर सकते हैं:पोस्टग्रेस्क्ल, खाली फ़ील्ड का चयन करें

SELECT mystr, mystr1 FROM mytable WHERE mystr='' or mystr1='' 

लेकिन है कि अगर मैं उन लोगों से पाठ हटा सकते हैं और सेल को रिक्त छोड़ते काम नहीं।

परिणाम प्राप्त करने के लिए क्वेरी को कैसे लिखें और परिणामस्वरूप एक साथ कोशिकाओं को स्पष्ट करें? या अकेले कोशिकाओं को साफ़ करें?

+0

तार खाली या शून्य हैं? (पोस्टग्रेर्स '' 'और' एनयूएलएल 'अलग हैं) – wildplasser

+0

मुझे नहीं पता कि' रिक्त सेल किस प्रकार का है ', सिर्फ pgadmin के साथ सेल के सभी पाठ हटा दिए गए हैं। अब मैं पूछताछ करने की कोशिश करता हूं कि Mystr = NULL या mystr1 = NULL, और परिणाम नहीं मिला। –

+6

आप न्यूल की तुलना नहीं कर सकते, न्यूल मूल्य नहीं है, यह ऑर्थोगोनल है। आपको इसके बजाय 'WHERE Mystr IS NULL' का उपयोग करना चाहिए। – wildplasser

उत्तर

37
SELECT mystr, mystr1 
FROM mytable 
WHERE COALESCE(mystr, '') = '' 
    OR COALESCE(mystr1, '') = '' 
    ; 

स्पष्टीकरण: coalesce(a,b,c, ...) समारोह सूची a,b,c,... बाएं से दाएं और पहली गैर-शून्य तत्व पर बंद हो जाता से पार करता। a,b,c कोई अभिव्यक्ति (या निरंतर) हो सकता है, लेकिन उसी प्रकार का उत्पादन करना चाहिए (या उसी प्रकार के लिए जबरदस्त होना चाहिए)।

+0

धन्यवाद" वाइल्डप्लेसर ", ऐसी अभिव्यक्ति या कमांड कभी नहीं देखें। मुझे इसे सावधानीपूर्वक जांचना है। यह अभी भी मेरी खाली कोशिकाओं को नहीं ढूंढता है। सौभाग्य से, डेटा को नोटपैड में कॉपी करके मैंने पाया कि उन "खाली" कोशिकाओं में pgadmin एक स्थान (chr (32)) छोड़ देता है। तो जहां mystr = '' परिणाम देते हैं। यहां है (postgresql में) कुछ फ़ंक्शन जैसे TRIM अस्वीकार कर सकते हैं स्ट्रिंग के दोनों तरफ से रिक्त स्थान? –

+0

हां, एक टीआरआईएम() फ़ंक्शन है। यह एएनएसआई-एसक्यूएल भी है (जैसे COALESCE()) – wildplasser

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