2012-03-15 16 views
6

मेरे पास नीचे दी गई क्वेरी है। जब type_id is null मैं इसे "अज्ञात" नाम से समूहीकृत करना चाहता हूं।
मैं इसे कैसे कर सकता हूं।
मुझे पता है कि एक डिकोड फ़ंक्शन है लेकिन मुझे यकीन नहीं है कि इसका उपयोग कैसे किया जाए।एसक्यूएल डीकोड नल वैल्यू

select type_id, 
     name 
    from test_table 
group by decode(type_id,'Unknown'), 
      name; 

मैं इसे कैसे कर सकता हूं?

+0

IFNULL(), COALESC() – wildplasser

+0

डीकोड करने डिकोड है (स्तंभ, potentialvalue, परिणाम, 2ndpotentialvalue, परिणाम, ... NpotentialValue, परिणाम, elsevalue) प्रकरण बयान थोड़ा आसान कर रहे हैं पढ़ने के लिए कुछ लोगों द्वारा पसंद किया जाता है। बस एफवाईआई - कार्यों की त्वरित परिभाषाओं के लिए एक महान संसाधन TechOnTheNet है। http://www.techonthenet.com/oracle/functions/decode.php आप आसानी से "ओरेकल डीकोड" को Google पर भेज सकते हैं और यह आपको उपरोक्त लिंक किए गए पृष्ठ पर ले जाता है। पोस्टिंग बचाता है और जवाब का इंतजार करता है। TechOnTheNet पर ओरेकल दस्तावेज़ को बढ़ावा देने के लिए – user158017

उत्तर

11
select decode(type_id, null, 'Unknown', type_id), name, count(*) 
from 
(
    select 'asdf' type_id, 'name1' name from dual union all 
    select 'asdf' type_id, 'name2' name from dual union all 
    select null type_id, 'name3' name from dual 
) test_table 
group by type_id,name; 

मैं @sql_mommy कि CASE शायद बेहतर दिखेगा से सहमत इस्तेमाल किया जा सकता। लेकिन मैं TechOnTheNet का उपयोग आपके प्राथमिक स्रोत के स्रोत के रूप में करने से असहमत हूं। आप आम तौर पर आधिकारिक दस्तावेज़ीकरण के साथ बेहतर होते हैं, और page for DECODE क्यों एक अच्छा उदाहरण है।

DECODE में कुछ अजीब व्यवहार है: "डेकोडे फ़ंक्शन में, ओरेकल दो नल समकक्ष मानता है।" TechOnTheNet आलेख में उस व्यवहार का उल्लेख नहीं किया गया है।

+1

+1। TOTN कुछ विशेषताओं को समझने में आसान बना सकता है लेकिन वे कभी-कभी महत्वपूर्ण जानकारी पर चमक सकते हैं। – Ollie

+0

जानकारी के लिए बहुत बहुत धन्यवाद – Arav

9

शून्य के लिए, हमारे पास एनवीएल फ़ंक्शन है। यह इस प्रकार

select nvl(type_id,'Unknown'),name from test_table group by 
type_id,name; 
3

आप उपयोग कर सकते हैं या तो NVL समारोह या COALESCE: के रूप में यह केवल दूसरा तर्क का मूल्यांकन करता है, तो पहले जबकि NVL मूल्यांकन करता है शून्य है

select NVL(type_id, 'Unknown') AS type_id, 
     name 
    from test_table 
group by NVL(type_id, 'Unknown'), 
      name; 

या

select COALESCE(type_id, 'Unknown') AS type_id, 
     name 
    from test_table 
group by COALESCE(type_id, 'Unknown'), 
      name; 

COALESCENVL तुलना में अधिक कुशल है हर बार दोनों तर्क।

आशा है कि यह मदद करता है ...

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