2012-12-27 9 views
10

मुझे एक सी # एप विरासत मिला है जिसे मैंने vb में परिवर्तित कर दिया है। मुझे एक त्रुटि मिलती है जहां तक ​​मैं देख सकता हूं रूपांतरण के साथ कुछ लेना देना नहीं है।एसक्यूएल सर्वर डेटाटाइप nvarchar और varchar असंगत त्रुटि

मैं एक एसक्यूएल बयान है जो है ....

SELECT ResolverID AS ddlValue, ResolverTeam & ' | ' & ResolverPerson AS ddlText 
FROM  dbo.TblResolvers 
ORDER BY ResolverTeam, ResolverPerson; 

जब यह समाप्त होने पर मुझे त्रुटि मिलती है:

The data types nvarchar and varchar are incompatible in the boolean AND operator.

तालिका दोनों ResolverTeam और ResolverPerson के रूप में निर्दिष्ट कर रहे हैं (nvarchar(255) , null)

मुझे यह त्रुटि क्यों मिल रही है?

+3

यह विशेष रूप से 'वर्कर' के बारे में क्यों बात कर रहा है क्योंकि '' | ''वर्चर' शाब्दिक है। यदि आप 'nvarchar' शाब्दिक चाहते हैं, तो 'एन' का उपयोग करें ' '। –

उत्तर

14

'+12' के लिए '' को बदलने की कोशिश करें ... इसे देखने के लिए आप क्या कर रहे हैं 2 कॉलम को जोड़ना है ... ऐसा कुछ है जिसके बारे में आपको सावधान रहने की आवश्यकता है: nvarchar है नियमित वर्चर के आकार को दोगुना करें, जिसका मतलब है कि नवराकार में वर्ण हैं जो वर्कर टेबल में नहीं हैं ...

+0

उन सभी लोगों के लिए धन्यवाद जिन्होंने उत्तर दिया ..... सी से तेज से vb तक मेरे रूपांतरण के हिस्से के रूप में मैंने + के साथ बदल दिया और मूल डेवलपर स्ट्रिंग बिल्डर्स का उपयोग नहीं किया और स्ट्रिंग = स्ट्रिंग + "foo" या स्ट्रिंग के कई उदाहरण भी थे = स्ट्रिंग + एक्स (जहां एक्स एक संख्या थी)। इनके माध्यम से जाने और बदलने के दौरान मैंने अनजाने में + एसक्यूएल कथन में बदल दिया जो मुझे नहीं होना चाहिए ..... बहुत धन्यवाद। – Mych

2

आप स्ट्रिंग concatentation के लिए + उपयोग करना चाहिए:

SELECT 
    ResolverID AS ddlValue, 
    ResolverTeam + ' | ' + ResolverPerson AS ddlText 
FROM dbo.TblResolvers 
Order By ResolverTeam, ResolverPerson; 

Why am I getting this error?

आप, कि त्रुटि मिल रहे थे & operator, जो बिटवाइस और है की वजह से।

2

MSSQL में तार जोड़ करने के लिए आप +

SELECT ResolverID AS ddlValue, 
    ResolverTeam + ' | ' + ResolverPerson AS ddlText 
    FROM dbo.TblResolvers Order By ResolverTeam, ResolverPerson; 
1

यह एक संयोजन का प्रयास है इस्तेमाल करना चाहिए? ResolverTeam & ' | ' & ResolverPerson

& बिटवाई ऑपरेटर AND है, इसे + के साथ बदलें और देखें कि क्या होता है।