2011-07-01 11 views
8

का उपयोग करते समय वापसी मूल्य कम हो रहा है मेरे पास यह चयन कथन है जहां मैं जांचता हूं कि फ़ोन नंबर शून्य या खाली है और यदि वे हैं तो मैं वापस 'कोई फोन नंबर उपलब्ध नहीं होगा'। इसएसक्यूएल सर्वर 2008 आईएसएनयूएलएल और न्यूलिफ़

SELECT 
     Name, 
     ISNULL(NULLIF(Phone, ''), 'No Phone Number is available') AS Phone 
FROM Person 

लेकिन जब फोन नंबर शून्य या खाली है तो मुझे पूरा टेक्स्ट नहीं मिला 'कोई फोन नंबर उपलब्ध नहीं है'। केवल पहले 20 वर्ण लौटे हो रही है। फोन क्षेत्र की लंबाई भी 20 है तो मुझे लगता है इस फोन क्षेत्र की लंबाई के आधार पाठ लौटा रहा है।

वहाँ क्षेत्र लंबाई बदले बिना इसे ठीक करने के लिए एक रास्ता है?

+0

आप कोड एक्सएमएल या डेटा के नमूने पोस्ट करते हैं तो ** कृपया ** पाठ संपादक में उन पंक्तियों पर प्रकाश डाला और "कोड नमूने" बटन पर क्लिक ('{ } ') संपादक उपकरण पट्टी पर अच्छी तरह से स्वरूपित करने के लिए और वाक्य रचना यह उजागर! –

उत्तर

9

आप सही हैं।

ISNULL पहले पैरामीटर की डेटाटाइप और लंबाई का उपयोग करता है। COALESCE "सर्वोच्च प्राथमिकता" एक लेता है। तो:

COALESCE(NULLIF(Phone, ''), 'No Phone Number is available') AS Phone 

या

ISNULL(NULLIF(CAST(Phone as varchar(30)), ''), 'No Phone Number is available') AS Phone