2015-05-04 69 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')