2009-09-17 17 views
61

को Typecasting शून्य हमें निम्न तालिका लगता है चलो (जैसे कई भीतरी का एक परिणाम के बयान में शामिल होने):MySQL: 0

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 

अब, अगर मैं के रूप में

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 
इस प्रकार t1.column_1 और t2.column_2 योग करना चाहते हैं

reslut के रूप में दिखाई देगा इस प्रकार है:

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) को आजमाया है, लेकिन NULLNULL रहता है।

उत्तर

121

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

+0

और सहस्राब्दी एक से अधिक मूल्य हो सकता है? –

+7

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

+0

@ डेविड: ठीक है। –

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