2015-05-04 47 views
-4

當我執行此查詢SQL Server 2008 R2中插入查詢錯誤

create table Customer 
(
    customerid int, 
    customername varchar(20), 
    ContactName varchar(15), 
    Address varchar(25), 
    City char(10), 
    Postalcode int, 
    Country varchar(15) 
) 

select * 
from Customer 

insert into Customer(customerid, customername, ContactName, Address, City, Postalcode, Country) 
values (4, 'Antonio Moreno', 'Taquería', 'Mataderos', 'México D.F.', '05023', 'Mexico') 

我得到一個錯誤

消息8152,級別16,狀態14,第1行
字符串或二進制數據會被截斷。該語句已終止。

+1

'墨西哥D.F.'長11個字符;你的城市定義允許爲10.另外,它確實應該是'nvarchar'而不是'char' – LittleBobbyTables

+0

這是錯誤的。你必須至少說出這個問題,並告訴我們你所嘗試過的。城市名稱超過10個字符'MéxicoD.F.' –

回答

0

給定的「城市」值是超過10個字符,要麼你必須在10個字符可以減少你的城市價值,或者你必須擴展數據類型的大小,比如CHAR(20)

0

更改City列固定長度:

ALTER TABLE Customer ALTER COLUMN City Varchar(20) 

- 把varchar(20)代替char(10),因爲SQL與VARCHAR將儲存足夠的字節串的有效長度,而char數據類型將在字符串的結尾添加空格如果字符串是小然後指定長度。

然後將您的插入條款:

insert into Customer(customerid, customername, ContactName, Address, City, Postalcode, Country) 
values (4, 'Antonio Moreno', 'Taquería', 'Mataderos', 'México D.F.', '05023', 'Mexico')