0
如果我在同一張表上運行相同的查詢,我遇到了一個錯誤,不同的是列類型。使用的查詢是:使用nvarchar時轉換失敗,但不是varchar
SELECT [name] FROM [demo] WHERE [name] = 1111111
如果name
列varchar(7)
那麼它運行沒有問題。
如果name
列nvarchar(7)
那麼它給出了一個錯誤:
Conversion failed when converting the nvarchar value 'BBBBBBB' to data type int.
錯誤是有道理的 - 我可以看到爲什麼整數值不能直接比較的字符串值。我也意識到我可以通過將其轉換爲條件字符串來解決它。
但是,我沒有得到的是爲什麼行爲是不同的nvarchar
和varchar
。 This chart似乎表明它們應該具有相同的類型轉換行爲。
有誰知道爲什麼會發生這種情況?
我不beliefe,那' VARCHAR'或'NVARCHAR'在這種情況下會有不同的表現...請嘗試[創建一個MCVE](http://stackoverflow.com/help/mcve)來重現此問題...我很確定,你的觀察得到了不同的解釋... – Shnugo
你100%發生了什麼?你能提供一個簡單的例子,其中[name]的值不是一個數字,'= 1111111'可以工作嗎? –
沒有攝製,你可以提供一個攝製'創建表#TEST ( ID INT, 名VARCHAR(7) ) INSERT INTO #TEST 選擇1, '1111' UNION ALL 選擇1,「AAAAA ' select * from #test where name = 1111' – TheGameiswar