MySQL: टाइपकास्टिंग NULL से 0


82

आइए हम निम्न तालिका को मानते हैं (उदाहरण के लिए कई आंतरिक जुड़ावों का परिणाम):

id | column_1 | column_2
------------------------
 1 |  1       | 
 2 |  2       | 2
 3 |          | 3

उदाहरण के लिए आप निम्नलिखित कथन से प्राप्त कर सकते हैं:

select a.id, t1.column_1, t2.column_2
from a
left join t1 on a.id = t1.id
left join t2 on a.id = t2.id

अब, अगर मैं निम्नानुसार t1.column_1 और t2.column_2 को सम्‍मिलित करना चाहूंगा

select 
    a.id, 
    t1.column_1, 
    t2.column_2,
    (t1.column_1 + t2.column_2) as cumulated
from a
left join t1 on a.id = t1.id
left join t2 on a.id = t2.id

पुनर्विक्रय निम्नानुसार दिखेगा:

id | column_1 | column_2 | cumulated
------------------------------------
 1 |  1       | NULL     | NULL
 2 |  2       | 2        | 4
 3 |  NULL    | 3        | NULL

मेरा प्रश्न मूल रूप से है: कुछ गणित करने के लिए NULL को टाइपकास्ट करने का एक तरीका है?

मैंने कोशिश की है CONVERT(t1.column_1, SIGNED)और CAST(t1.column_1 as SIGNED), लेकिन एक NULLरहता है NULL।

जवाबों:


154

IFNULL(column, 0)स्तंभ मान को शून्य में बदलने के लिए उपयोग करें । वैकल्पिक रूप से, COALESCE फ़ंक्शन एक ही काम करेगा, (1) COALESCEको छोड़कर ANSI- अनुरूप है, IFNULLनहीं है, और (2) COALESCEस्तंभों / मानों की एक मनमानी संख्या लेता है और इसके लिए पारित पहला गैर-शून्य मान लौटाएगा।


और एक से अधिक मान हो सकता है?
— ante.sabo

10
हां ... इसलिए COALESCE (कॉलम 1, कॉलम 2, 0) इन मूल्यों के पहले गैर-शून्य को लौटाएगा। यह ध्यान रखें कि यह क्षैतिज रूप से कार्य करता है, लंबवत नहीं। कॉलम एक ही तालिका पंक्ति से संबंधित होने चाहिए।
— डेविड एंड्रेस

@ ग्रिड: धन्यवाद, यह कहने के लिए बहुत अच्छा है। बहुत सराहना की!
— डेविड एंड्रेस

@ डेविड एंड्रेस ए मिलियन थैंक्यू। अगर केवल मैं दूसरी बार उत्थान कर सकता था।
— कहानी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.