2012-03-29 14 views
25

SQL सर्वर 2005 का उपयोग करते समय रूपांतरण विफल हो गया है, मैं नीचे दिए गए कथन या आउटपुट को कैसे प्राप्त करूं जैसा मैं चाहता हूं।नल से रिक्त स्ट्रिंग में कनवर्ट करें - एक वर्ण स्ट्रिंग से अनन्य पहचानकर्ता

SELECT Id 'PatientId', 
     ISNULL(ParentId,'') 'ParentId' 
FROM Patients 

ParenId एक uniqueidentifier कि NULL अनुमति देता है, लेकिन लगता है कि क्वेरी अनुकूलक की कोशिश करता है उन पंक्तियों जहां ParentId = NULL जैसा कि शीर्षक का कहना है कि सटीक त्रुटि की जानकारी क्वेरी धावक मेरे चेहरे पर फेंकता है के लिए uniqueidentifier को वापस '' कन्वर्ट करने के लिए !!

  • कैसे मैं सर्वर के लिए ParentId = NULL

उत्तर

53
SELECT Id 'PatientId', 
     ISNULL(CONVERT(varchar(50),ParentId),'') 'ParentId' 
FROM Patients 

ISNULL हमेशा एक परिणाम के अपने पहले तर्क के प्रकार के रूप ही डेटा प्रकार है कि वापस जाने के लिए कोशिश करता है। इसलिए, यदि आप परिणाम एक स्ट्रिंग (varchar) चाहते हैं, तो आप सबसे अच्छा सुनिश्चित करेंगे कि यह पहला तर्क है।


COALESCE आमतौर पर ISNULL से उपयोग करने के लिए एक बेहतर कार्य है, क्योंकि यह सभी तर्क डेटा प्रकार समझता है और उचित precedence नियम लागू होता है अंतिम परिणामी डेटा प्रकार का निर्धारण करने के लिए है। दुर्भाग्यवश, इस मामले में, uniqueidentifier की varchar से अधिक प्राथमिकता है, इसलिए इससे मदद नहीं मिलती है।

(यह भी आम तौर पर पसंद है क्योंकि यह दो से अधिक तर्कों तक फैली हुई)

+0

वांछित से अधिक देने के लिए धन्यवाद। मैंने आपके उत्तर से बहुत कुछ सीखा है, इसे 4 मिनट में उत्तर के रूप में चिह्नित किया जाएगा Greetz – Deeptechtons

+0

@Damien_The_Unbeliever मैंने कोशिश की 'कोलेसेज (कन्वर्ट (50), अभिभावक (50), अभिभावक),' ')' और 'इस्लाम (कन्वर्ट (वर्कर (50), अभिभावक आईडी), '') 'और मुझे अभी भी एक खाली सेल के बजाय शून्य मिल रहा है। मेरा अभिभावक छोटा है। – bteague

+0

ने ISNULL (CAST (VARCHAR (50) के रूप में अभिभावक), '') और कोलेसे (CAST (VARCHAR (50) के रूप में अभिभावक), '' – bteague

5

आप एक nvarchar रूप ParentIdCAST है, ताकि उत्पादन हमेशा एक ही डेटा प्रकार है की जरूरत रिक्त स्ट्रिंग वापस जाने के लिए मिलता है।

SELECT Id 'PatientId', 
     ISNULL(CAST(ParentId as nvarchar(100)),'') 'ParentId' 
FROM Patients 
8
Select ID, IsNull(Cast(ParentID as varchar(max)),'') from Patients 

यह जरूरत है क्योंकि क्षेत्र ParentID varchar/nvarchar प्रकार नहीं है। यह चाल करेगा:

Select ID, IsNull(ParentID,'') from Patients 
संबंधित मुद्दे