2012-12-27 107 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,用+代替它,看看会发生什么。

相关问题