使用nvarchar时转换失败,但不是varchar

时间:2017-06-21 10:36:54

标签: sql-server

如果我在同一个表上运行相同的查询,我遇到了错误的情况,不同的是列类型。使用的查询是:

 SELECT [name] FROM [demo] WHERE [name] = 1111111

如果name列为varchar(7),那么它运行没问题。

如果name列为nvarchar(7),则会出错:

  

将nvarchar值'BBBBBBB'转换为数据类型int时转换失败。

错误有意义 - 我可以看到为什么整数值不能直接与字符串值进行比较。我也意识到我可以通过强制转换为条件来解决它。

但是,我没有得到的是nvarcharvarchar的行为不同的原因。 This chart似乎表明它们应该具有相同的类型转换行为。

有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:4)

如果您使用nvarchar列,则查询应如下所示:

SELECT [name] FROM [demo] WHERE [name] = N'1111111'

N在字符串的开头,以确保您的字符串是unicode字符串(nvarchar)