2013-04-23 18 views
9

mam poniższej tabeli:Msg 8152, String lub dane binarne zostaną obcięte

CREATE TABLE Vendors 

(
    VendorID   NUMERIC(10)  NOT NULL, 
    VendorName   CHAR(50)  NOT NULL, 
    VendorAddress  VARCHAR(30)  NULL, 
    VendorCityName  VARCHAR(20)  NOT NULL, 
    VendorStateName  CHAR(2)   NOT NULL, 
    VendorZip   VARCHAR(10)  NULL, 
    VendorContactName CHAR(50)  NOT NULL, 
    VendorContactPhone VARCHAR(12)  NOT NULL, 
    VendorContactEmail VARCHAR(20)  NOT NULL, 
    VendorSpecialty  CHAR(20)  NOT NULL 

    CONSTRAINT VendorsPK  PRIMARY KEY (VendorID)  
); 

i to insert:

INSERT INTO Vendors(VendorID, VendorName, VendorAddress, 
    VendorCityName, VendorStateName, VendorZip, VendorContactName, 
    VendorContactPhone, VendorContactEmail, VendorSpecialty) 
VALUES(151330, 'Hyperion', '77 West 66th Street', 'New York', 
    'NY', 10023, 'John Hinks', '212-337-6564', 
    '[email protected]', 'Popular fiction') 

Dlaczego to stwierdzenie uzyskując błąd 8152?

+0

@zhrist widzę co robiłeś tam ... Czy istnieje ... Czy istnieje ... – Tjorriemorrie

Odpowiedz

21

VendorContactEmail ma tylko 20 bajtów. Twój adres e-mail w pierwszym wierszu ([email protected]) jest dłuższy niż 24 bajty. Wiele adresów e-mailowych będzie dłuższych. Kto zdecydował się na dopuszczenie tylko 20 znaków w kolumnie adresu e-mail? Zgodnie ze standardem powinno to być VARCHAR(320) - 64 znaki dla localpart + 1 dla @ 255 dla domeny.

4

Siła Operacja, która powoduje obcinanie wykonać Anyway

SET ANSI_WARNINGS OFF; 
-- Your operation TSQL here. 
SET ANSI_WARNINGS ON; 

(source)

Powiązane problemy