SQL Server 2008 R2插入查询错误

时间:2015-05-04 13:34:11

标签: sql 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')

我收到错误

  

Msg 8152,Level 16,State 14,Line 1
  字符串或二进制数据将被截断。声明已经终止。

2 个答案:

答案 0 :(得分:0)

给定的“城市”值超过10个字符,要么必须将城市值减少到10个字符以内,要么必须像char(20)那样扩展数据类型大小

答案 1 :(得分:0)

City列更改为修正长度:

ALTER TABLE Customer ALTER COLUMN City Varchar(20)

- 将varchar(20)改为char(10),因为带有varchar的SQL将存储足够的字节作为字符串的有效长度,而如果字符串小于指定长度,则char数据类型将在字符串的末尾添加空格

然后放置你的insert子句:

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