2012-12-27 20 views
10

Ben vb için dönüştürdüğüm bir C# app miras aldım. Görebildiğim kadarıyla dönüşümle ilgisi olmayan bir hata alıyorum. Ben bir SQL deyimi varSQL Server datatypes nvarchar ve varchar uyumsuz hata

.... bu hatası alıyorum çalışır

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

: Her iki ResolverTeam ve ResolverPerson olarak belirtilir tabloda

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

(nvarchar(255) , null)

Neden bu hatayı alıyorum?

+3

Neden özellikle 'varchar' den bahsediyor çünkü '' | ''bir varchar' literal. Bir nvarchar 'literal istiyorsanız,' N 'kullanın. '. –

cevap

14

'+' ... '&' yerine değiştirmeyi deneyin. Yapmaya çalıştığınız şey 2 sütunu birleştirmek ... yapmaya çalıştığınız şey hakkında şüphe duymanız gereken bir şey var: nvarchar varchar tablosunda olmayan nvarcharda chars var anlamına gelen normal varchar büyüklüğünü iki katına çıkarır ...

+0

Cevabımdan c'ye kadar çevirimimin bir parçası olarak yanıt veren herkese teşekkürler + orjinal geliştiricinin dize kurucularını kullanmadığı ve dize = string + "foo" veya hatta string gibi birçok örneği olduğu için + ile değiştirildi = string + x (x bir sayıdır). Olmadan ve ben bu değiştirmeden yerine ben değiştirmemesi gereken SQL deyimleri + değiştirildi + ..... Çok teşekkürler. – Mych

2

Sen dize concatentation için + kullanmalıdır: Sen çünkü Bitwise VE olan & operator ait, hatayı elde edildi

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

Why am I getting this error?

.

2

Eğer +

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

bu bir birleştirme girişimi mi kullanmalıyım MSSQL dizeleri bitiştirmek için mi?

&ResolverTeam & ' | ' & ResolverPerson bitsel operatör AND olduğunu + ile değiştirin ve ne olduğunu görün.

İlgili konular