如果我在同一个表上运行相同的查询,我遇到了错误的情况,不同的是列类型。使用的查询是:
SELECT [name] FROM [demo] WHERE [name] = 1111111
如果name
列为varchar(7)
,那么它运行没问题。
如果name
列为nvarchar(7)
,则会出错:
将nvarchar值'BBBBBBB'转换为数据类型int时转换失败。
错误有意义 - 我可以看到为什么整数值不能直接与字符串值进行比较。我也意识到我可以通过强制转换为条件来解决它。
但是,我没有得到的是nvarchar
和varchar
的行为不同的原因。 This chart似乎表明它们应该具有相同的类型转换行为。
有谁知道为什么会这样?
答案 0 :(得分:4)
如果您使用nvarchar
列,则查询应如下所示:
SELECT [name] FROM [demo] WHERE [name] = N'1111111'
N
在字符串的开头,以确保您的字符串是unicode字符串(nvarchar)