2012-03-05 14 views
40

आप खाली स्ट्रिंग के साथ चयन में एक नल मान को कैसे बदलते हैं? यह "पूर्ण" मान आउटपुट करने के लिए बहुत पेशेवर नहीं दिखता है।MySQL क्वेरी त्वरित चयन के साथ नल को बदलें

यह बहुत असामान्य है और मेरे वाक्यविन्यास पर आधारित है, मैं इसे काम करने की उम्मीद करता हूं। एक स्पष्टीकरण की उम्मीद है कि यह क्यों नहीं करता है। मूल तालिका की तरह, जो मैं चाहता दिखता है, और के

select CASE prereq WHEN (prereq IS NULL) THEN " " ELSE prereq end from test; 

उदाहरण क्या वास्तविक प्रिंट:

original  wanted  what actually prints 
--------  ------  --------------------- 
value1  value1  
NULL      NULL 
value2  value2  
NULL      NULL 

आप देख सकते हैं यह है कि मैं क्या चाहता हूँ के विपरीत है, इसलिए मैं flipping की कोशिश की न्यूल पूर्ण नहीं है और निश्चित रूप से इसे ठीक नहीं किया है, इस मामले की स्थिति को स्वैप करने का भी प्रयास किया, जो काम नहीं करता था।

संपादित करें: ऐसा लगता है कि सभी कार्य नीचे दिए गए 3 समाधान हैं। संबंध

select if(prereq IS NULL ," ",prereq) from test 
select IFNULL(prereq,"") from test 
select coalesce(prereq, '') from test 
+1

मुझे लगता है कि '(prereq IS NULL) 'को केवल' NULL' – ScottJShea

उत्तर

2

इन कार्यों में बनाया से कुछ काम करना चाहिए:

Coalesce 
Is Null 
IfNull 
0

इस प्रयास करें, यह भी उन लोगों को भी खाली लाइनों से छुटकारा पाने चाहिए:

SELECT prereq FROM test WHERE prereq IS NOT NULL; 
+0

पढ़ना चाहिए यह आउटपुट फ़िल्टर कर रहा है जो मुझे नहीं लगता कि ओपी – Simon

+0

के बाद है यह मेरा उदाहरण है जो उसके उदाहरण पर आधारित है। मुझे वास्तव में कारण नहीं दिखता है कि रिक्त रेखाएं नल मूल्यों से अधिक पेशेवर होंगी। –

9

नीचे का प्रयास करें;

select if(prereq IS NULL ," ",prereq) from test 
+0

जब मैं शून्य हो जाता हूं तो मैं कैसे छोड़ूं? (इसे का चयन न करें?) – Pathros

1

COALESCE आज़माएं। यह पहला गैर-शून्य मान देता है।

SELECT COALESCE(`prereq`, ' ') FROM `test` 
55
SELECT COALESCE(prereq, '') FROM test 

संगठित होना पहली गैर शून्य तर्क के बाएं से दाएं इसे करने के लिए पारित किया वापस आ जाएगी। यदि सभी arguemnts शून्य हैं, तो यह शून्य वापस आ जाएगा, लेकिन हम वहां एक खाली स्ट्रिंग मजबूर कर रहे हैं, तो कोई शून्य मान वापस नहीं किया जाएगा।

यह भी ध्यान रखें कि COALESCE ऑपरेटर मानक SQL में समर्थित है। यह IFNULL का मामला नहीं है। तो पूर्व का उपयोग करने के लिए यह एक अच्छा अभ्यास है। इसके अतिरिक्त, ध्यान रखें कि COALESCE 2 से अधिक पैरामीटर का समर्थन करता है और जब तक एक गैर-संयोग संयोग मिलता है तब तक यह उन पर फिर से चालू हो जाएगा।

+1

सहमत है कि IFNULL की MySQL विशिष्टता को ध्यान में रखना उचित है। यह ओपी मामले में काम करता है लेकिन शायद दूसरों में नहीं। – JScoobyCed

76

तुम सच में उत्पादन शून्य लोगों सहित हर मूल्यों चाहिए:

select IFNULL(prereq,"") from test 
+0

+1 यह सबसे आसान जवाब आईएमओ – Simon

+0

शून्य मूल्यों के चयन के दौरान आप अचयनित या छोड़ने के लिए कैसे करेंगे ??? – Pathros

3

मूल रूप लगभग पूर्ण है, तो आप सिर्फ करने के लिए है छोड़ आवश्यकता पूरीमामला के बाद:

SELECT 
    CASE 
    WHEN prereq IS NULL THEN ' ' 
    ELSE prereq 
    END AS prereq 
FROM test; 
संबंधित मुद्दे