18

私はこのテーブルを持っています:

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)      
);

そして、この挿入:

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', 
  'jhinks@hyperionbooks.com', 'Popular fiction')

このステートメントで 8152 エラーが発生するのはなぜですか?

4

3 に答える 3

34

VendorContactEmailはわずか 20 バイトです。最初の行 ( jhinks@hyperionbooks.com) の電子メール アドレスはそれよりも長く、24 バイトです。また、多くの電子メール アドレスは長くなります。電子メール アドレスの欄に 20 文字しか使用できないと決めたのは誰ですか? 標準によると、これはVARCHAR(320)- 64 文字の場合<localpart>+ 1 の場合@+ 255 文字の場合です<domain>

エラー メッセージ自体に関しては、当時よりも現在の方が簡単に原因を突き止めることができます。

于 2013-04-23T14:45:30.890 に答える
1

You can also minimize the length of column values by using following expression:

LEFT(columnName, 250) + '...'  

I tried and it works.

于 2019-12-26T06:17:44.957 に答える