Sql-Server

VarChar 到 NVarChar 導致截斷錯誤

  • May 20, 2013

我正在從一個臨時表中導入一些數據,該表的列定義為VARCHAR(150). 目標表列定義為NVARCHAR(200)。我正在使用一條INSERT INTO語句,但是當我執行註釋掉該列的 SQL 語句時,查詢執行正確。當我取消註釋這一行時,我得到:

消息 8152,第 16 級,狀態 4,第 26 行

字元串或二進制數據將被截斷。

該語句已終止。

關於為什麼會發生這種情況的任何想法?

INSERT INTO table (col1, col2)
SELECT column1
     ,column2
 FROM tmpTable

col1被定義為NVARCHAR(200)並且col2DateTimecolumn1被定義為VARCHAR(150)並且column2DateTime

當我註釋掉column1並且col1導入語句執行良好時。

那麼這不會發生,除非

  1. 觸發器正在目標表上觸發,並且錯誤發生在那裡
  2. INSERT 做了一些處理,添加了足夠的數據使其太寬

另外,請問這個怎麼回事?除非有一些處理,否則這不會失敗。

INSERT INTO table (col1, col2)
SELECT LEFT(column1, 200)
     ,column2
 FROM tmpTable

引用自:https://dba.stackexchange.com/questions/42610