2015-08-28 113 views
0

在SQL INSERT語句,我的工作 - 請參閱下面的查詢。 當我運行的聲明,它給這個錯誤:SQL - INSERT語句位轉換

Msg 8152, Level 16, State 2
String or binary data would be truncated.
The statement has been terminated.

如何糾正這個錯誤?

在舊錶(數據來自何處), [Environment]列被稱爲[Err_Dev_Prod], ,它是一個NVARCHAR(50)數據類型。在新表 是bit數據類型

IF OBJECT_ID(N'LCN_Board', N'U') IS NOT NULL DROP TABLE LCN_Board 
CREATE TABLE [LCN_Board](
    [Metric_Id] VARCHAR(128) NULL, 
    [Environment] BIT NULL, --[Err_Dev_Prod] 
    [Date/Time] DATETIME NULL, 
    [IMPORT_DATE] DATE DEFAULT GETDATE() NULL, 
    [MODIFIED_DATE] DATE DEFAULT GETDATE() NULL, 
    [REPORTING_PERIOD]DATE NULL, 
    [Process_ID] Uniqueidentifier DEFAULT (NEWID()) NOT NULL, 
    [Key] VARCHAR(128) NULL 
) ON [PRIMARY] 
GO 
INSERT INTO LCN_Board 
( [Metric_Id], 
    [Environment], 
    [Date/Time], 
    [IMPORT_DATE], 
    [MODIFIED_DATE], 
    [REPORTING_PERIOD], 
    [Process_ID] 
    ) 
SELECT 
    [Metric Id], 
    CASE LOWER([Err_Dev_Prod]) WHEN 'yes' THEN 1 ELSE 0 END, 
    [Date/Time], 
    [IMPORT_DATE], 
    [MODIFIED_DATE], 
    [REPORTING_PERIOD], 
    [Process_ID] 
FROM dbo. LCN_Board_old 
ORDER BY [Date/Time]; 
GO 
+0

嘗試使用真假,而不是1和0 –

+2

它不會看起來像位的字段並且它的轉換導致此錯誤。更有可能的是你有舊錶'公制Id'或'Process_ID'場大小比'VARCHAR更大(128)' –

+1

請後兩個表'LCN_Board_old'和'LCN_Board' – Murtaza

回答

0

這不是BIT轉換的情況下,儘量加大varcahar限制或者如果可能設置爲最大