我有这张桌子:
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错误?
答案 0 :(得分:28)
VendorContactEmail
只有20个字节。第一行(jhinks@hyperionbooks.com
)上的电子邮件地址长于24字节。许多电子邮件地址会更长。谁决定只在电子邮件地址栏中允许20个字符?根据标准,这应该是VARCHAR(320)
- 64个字符用于localpart + 1用于@ + 255用于域。
答案 1 :(得分:7)
答案 2 :(得分:0)
您还可以通过使用以下表达式来最小化列值的长度:
LEFT(columnName, 250) + '...'
我尝试过,并且有效。