2017-06-21 17 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)

相關問題