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

Я получаю сообщение об ошибке

Msg 8152, уровень 16, состояние 14, строка 1
Строка или двоичные данные будут усечены. Заявление было прекращено.

+1

'México D.F.' длиной 11 символов; ваше определение города допускает 10. Кроме того, это действительно должно быть 'nvarchar' вместо' char' – LittleBobbyTables

+0

Это просто неправильно. Вы должны хотя бы ответить на этот вопрос и рассказать нам, что вы пробовали. Название города длиннее 10 символов 'México D.F.' –

ответ

0

Приведенное значение «Город» более чем 10 символов, либо вы должны уменьшить значение города в пределах 10 символов или вы должны увеличить размер типа данных, как CHAR (20)

0

Изменить City колонки зафиксировать длину:

ALTER TABLE Customer ALTER COLUMN City Varchar(20) 

- поставил varchar(20) вместо char(10), потому что SQL с VARCHAR будет хранить достаточное количество байтов, как эффективная длина строки, в то время как символ типа данных будет добавлять пробелы в конце строки, если строка меньше, чем указанная длина ,

затем поместите пункт вставки:

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