2012-12-27 106 views
10

我已經繼承了我轉換爲vb的C#應用​​程序。我看到一個錯誤,據我所知,與轉換無關。SQL Server數據類型nvarchar和varchar不兼容錯誤

我有一個SQL語句是....

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.

在這兩個ResolverTeamResolverPerson被指定爲表(nvarchar(255) ,null

爲什麼我得到這個錯誤?

+3

爲什麼它具體談論'varchar'是因爲''| ''是一個'varchar'文字。如果你想要一個'nvarchar'文字,使用'N'| 「'。 –

回答

14

嘗試將'&'替換爲'+'...通過它的外觀你要做的是連接2列...有一些你需要做的事情:nvarchar是是常規varchar的大小的兩倍,這意味着在nvarchar中存在不在varchar表中的字符...

+0

感謝所有誰回答.....作爲我從c sharp轉換爲vb的一部分,我用&代替了原來的開發者並沒有使用字符串構建器,並且有很多string = string +「foo」的實例,甚至字符串= string + x(其中x是一個數字)。雖然經歷和取代這些我無意中取代+ SQL語句,我不應該.....非常感謝。 – Mych

2

您應該使用+用於字符串連接:

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,用+代替它,看看會發生什麼。

相關問題