2010-01-18 17 views
8

का उपयोग करके कुल मूल्यों को कैसे पकड़ें, मैं इस व्यक्ति में मूल्यों को प्रतिस्थापित करना चाहता हूं। कुछ नए मूल्यों के साथ Adventureworks डेटाबेस से संपर्क करें। नीचे दिए गए क्वेरी केस स्टेटमेंट अन्य मानों के लिए ठीक काम कर रहा है लेकिन मैं उन मानों को बदलने में सक्षम नहीं हूं जो नल में हैं। मैं एसक्यूएल सर्वर का उपयोग कर रहा हूँ। किसी भी मदद की सराहना की है।इस कथन में केस स्टेटमेंट

 
select contactid,Title,FirstName,MiddleName, 
case MiddleName 
when 'R.' then 'Robert' 
when 'B.' then 'Bids' 
when 'J.' then 'John' 
when is null then 'New Name' 
else 'No Name' 
end, LastName from Person.Contact 

उत्तर

10

मैं IsNull समारोह का उपयोग करें - यह देखते हुए मूल्य वापस आ जाएगी, तो फ़ील्ड रिक्त है:

select contactid,Title,FirstName,MiddleName, 
case ISNULL(MiddleName, 'NULLVALUE') 
when 'R.' then 'Robert' 
when 'B.' then 'Bids' 
when 'J.' then 'John' 
when 'NULLVALUE' then 'New Name' 
else 'No Name' 
end, LastName from Person.Contact 
+0

पूर्ण मामले पर गलत। –

+0

@ जोहान: मेरी गलती - इसे ठीक किया गया। अब यह ठीक काम करना चाहिए। –

+6

मैं सहमत हूं। आइए उम्मीद करें कि किसी के पास मध्य नाम के रूप में 'NULLVALUE' नहीं है। –

15
case 
when MiddleName is null then ... 
when MiddleName = 'R' then ... 
end 
2

7 साल बाद पोस्ट करने के लिए क्षमा करें, लेकिन मैं कोशिश कर रहा है इंटरबेस/फायरबर्ड के लिए समाधान ढूंढने के लिए और यह पोस्ट पॉप-अप रखा गया। यहां कोई भी समाधान काम नहीं करता है क्योंकि कोई ISNULL नहीं है, इसलिए मुझे लगा कि मैं किसी और की मदद कर सकता हूं जो यहां आ सकता है:

select contactid,Title,FirstName,MiddleName, 
case COALESCE(MiddleName, 'NULLVALUE') 
when 'R.' then 'Robert' 
when 'B.' then 'Bids' 
when 'J.' then 'John' 
when 'NULLVALUE' then 'New Name' 
else 'No Name' 
end, LastName from Person.Contact 
+2

फायरबर्ड में ['null'] नहीं है (http://stackoverflow.com/a/2085129/11683) भी (' isnull' के विपरीत)? – GSerg

+1

बहुत बहुत धन्यवाद .. इंटरबेस का उपयोग करने में एक ही समस्या थी जिसमें ISNULL नहीं है लेकिन आपका कोड काम करता है! – SovereignSun

+0

@ जीएसईआर फायरबर्ड शायद, लेकिन मैं इंटरबेस में काम कर रहा था ... फायरबर्ड में और अधिक सुविधाएं हैं, लेकिन इंटरबेस में काम करने वाली किसी भी चीज को फायरबर्ड में काम करना चाहिए, लेकिन दूसरी तरफ नहीं। इसके अलावा, मैंने ISNULL के लिए अपने स्वयं के यूडीएफ को सेट करने के लिए सभी प्रकार के लिंक देखे, लेकिन मुझे ऐसा करने की आवश्यकता थी जो मुझे करने की आवश्यकता थी। – eromrab

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