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.