2010-02-06 13 views
191

एमएस एसक्यूएल सर्वर-में, मैं क्या कर सकता है:क्या IsNull के लिए PostgreSQL समकक्ष()

SELECT ISNULL(Field,'Empty') from Table

लेकिन PostgreSQL में मैं एक वाक्य रचना त्रुटि मिलती है। मैं ISNULL() कार्यक्षमता का अनुकरण कैसे करूं?

+1

नहीं, तुम ऐसा नहीं कर सकते MSSQL में कि। वह कोड संकलित नहीं होगा। 'ISNULL' दो तर्क लेता है और दूसरा लौटाता है पहला पहला 'शून्य' है, अन्यथा पहला। – GSerg

+0

@GSerg, आप सही हैं। तय है कि। –

+0

Gserg और बायरन हाँ आप यहाँ उदाहरण मेरे पीसी से चयन isnull (a.FechaEntregada, '') परीक्षण रूप dbo.Amonestacion से देख सकते हैं एक https://msdn.microsoft.com/en-us/ 'coalesce' के लिए लाइब्रेरी/ms184325.aspx – Juan

उत्तर

338
SELECT CASE WHEN field IS NULL THEN 'Empty' ELSE field END AS field_alias 

या अधिक मुहावरेदार:

SELECT coalesce(field, 'Empty') AS field_alias 
+37

+1। (पीएस आप एमएस एसक्यूएल सर्वर में भी ऐसा कर सकते हैं।) –

+1

आईएस न्यूल का उपयोग करने के लिए अन्य मामले हैं, इसलिए दोनों को जानना अच्छा होता है। –

+26

मुझे लगता है कि यह ध्यान देने योग्य है कि यह 'coalesce' है जो SQL मानक में है,' isnull' एक एमएस-विशिष्ट फ़ंक्शन है जो अनिवार्य रूप से केवल दो पैरामीटर के साथ 'coalesce' है। – GSerg

-7

निम्नलिखित समारोह

CREATE OR REPLACE FUNCTION isnull(text, text) RETURNS text AS 'SELECT (CASE (SELECT $1 " 
    "is null) WHEN true THEN $2 ELSE $1 END) AS RESULT' LANGUAGE 'sql' 

बनाएं और यह काम करेंगे।

आप विभिन्न पैरामीटर प्रकारों के साथ विभिन्न संस्करण बना सकते हैं। बजाय

+24

कृपया, कोई भी ऐसा नहीं करता है। इसके बजाय coalesce() का उपयोग करें ताकि आपका डीबीए आपको नफरत न करे। – Jordan

58

उपयोग COALESCE():

SELECT COALESCE(Field,'Empty') from Table; 

यह ISNULL की तरह कार्य करता है, हालांकि अधिक सुविधा प्रदान करता है। Coalesce सूची में पहला गैर शून्य मूल्य वापस कर देगा। इस प्रकार:

SELECT COALESCE(null, null, 5); 

रिटर्न 5, जबकि

SELECT COALESCE(null, 2, 5); 

रिटर्न 2

संगठित होना तर्क की एक बड़ी संख्या का समय लगेगा। अधिकतम दस्तावेज नहीं है। मैंने परीक्षण किया कि यह 100 तर्क होगा और यह सफल रहा। यह विशाल परिस्थितियों के लिए बहुत होना चाहिए।

16

मैं ISNULL() कार्यक्षमता का अनुकरण कैसे करूं?

SELECT (Field IS NULL) FROM ... 
+4

यह isnull की सटीक कार्यक्षमता को अनुकरण करता है, यह सुनिश्चित नहीं है कि यह – smackshow

+3

@artur क्यों डाउनवॉट किया गया है आप समझ में नहीं आता कि कैसे काम नहीं करता है। – datashaman

+0

बेशक सवाल के लिए सबसे अच्छा जवाब। यह अभिव्यक्ति ISNULL() के पूर्ण समतुल्य है। COALESCE() बहुत ही स्मार्ट और जानना दिलचस्प है लेकिन यह बंद होने पर ISNULL() निष्पादित नहीं कर सकता है। – Skrol29

10

प्रयास करें:

SELECT COALESCE(NULLIF(field, ''), another_field) FROM table_name 
+1

यह अच्छा है क्योंकि यह टेक्स्ट फ़ील्ड शून्य नहीं है, बल्कि 'खाली' के मामले में भी शामिल है। – soulia

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