2017-06-21 91 views
0

如果我在同一张表上运行相同的查询,我遇到了一个错误,不同的是列类型。使用的查询是:使用nvarchar时转换失败,但不是varchar

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

如果namevarchar(7)那么它运行没有问题。

如果namenvarchar(7)那么它给出了一个错误:

Conversion failed when converting the nvarchar value 'BBBBBBB' to data type int.

错误是有道理的 - 我可以看到为什么整数值不能直接比较的字符串值。我也意识到我可以通过将其转换为条件字符串来解决它。

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

有谁知道为什么会发生这种情况?

+0

我不beliefe,那' VARCHAR'或'NVARCHAR'在这种情况下会有不同的表现...请尝试[创建一个MCVE](http://stackoverflow.com/help/mcve)来重现此问题...我很确定,你的观察得到了不同的解释... – Shnugo

+0

你100%发生了什么?你能提供一个简单的例子,其中[name]的值不是一个数字,'= 1111111'可以工作吗? –

+0

没有摄制,你可以提供一个摄制'创建表#TEST ( ID INT, 名VARCHAR(7) ) INSERT INTO #TEST 选择1, '1111' UNION ALL 选择1,“AAAAA ' select * from #test where name = 1111' – TheGameiswar

回答

4

如果您在使用nvarchar栏查询应该是这样的:

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

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

相关问题