SQL Server 数据类型 nvarchar 和 varchar 不兼容错误

15

我继承了一个C#应用程序,现在已经转换为vb。我遇到了一个错误,但据我所见与转换无关。

我有一条SQL语句是...

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

运行时出现以下错误:

在布尔 AND 运算符中,数据类型 nvarchar 和 varchar 不兼容。

在表中,ResolverTeamResolverPerson 都被指定为 (nvarchar(255), null)。

为什么会出现这个错误?


4
之所以特别提到“varchar”,是因为“' | '”是一个“varchar”字面量。如果你想要一个“nvarchar”字面量,可以使用“N' | '”。 - Damien_The_Unbeliever
4个回答

26
尝试将&替换为+;看起来你想要做的就是连接两列。需要注意的是nvarchar是普通varchar的两倍大小,这意味着nvarchar中有一些字符不在varchar表中。

5

在字符串连接时应使用+

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

为什么会出现这个错误?

你之所以会出现这个错误,是因为 & 运算符,它是位与运算符。


4

在MSSQL中拼接字符串,应使用+符号。

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

3

这是一个拼接尝试吗? ResolverTeam & ' | ' & ResolverPerson

& 是位运算符AND,将其替换为+并查看结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接