插入SQL Server表 - 数据将被截断(URL相关?)

时间:2017-04-30 20:27:14

标签: sql sql-server

我目前正在开设一个课程项目,我正在为那些对图像漫画创作者感兴趣的人创建一个粉丝门户网站。我尝试使用SQL Server数据库作为我的信息来源,当有人点击URL时,它将使用SQL表中的该创建者的信息填充MVC视图页面。我目前正在制作桌子,但我遇到了麻烦,我似乎无法插入到我所制作的桌子中。

这是表结构:

CREATE TABLE [dbo].[Writers]
(
    [WriterID] INT NOT NULL PRIMARY KEY, 
    [WriterLast] CHAR(20) NULL, 
    [WriterFirst] CHAR(20) NULL, 
    [WriterBio] CHAR(500) NULL, 
    [WriterBorn] CHAR(18) NULL, 
    [WriterPastSeries] CHAR(30) NULL, 
    [WriterWebsite] CHAR(50) NULL, 
    [WriterTwitter] CHAR(50) NULL, 
    [WriterFacebook] CHAR(50) NULL
)

这是我试图使用的插入语句:

INSERT INTO Writers
VALUES (101, 'Brubaker', 'Ed', 'Ed Brubaker (born November 17, 1966) is an American comic book writer and cartoonist. Brubaker''s first early comics work was primarily in the crime fiction genre with works such as Lowlife, The Fall, Sandman Presents: Dead Boy Detectives and Scene of the Crime. He later became known for writing superhero comics such as Batman, Daredevil, Captain America, Catwoman, Uncanny X-Men, and The Authority. He has won an Eisner Award on six separate occasions. (Wikipedia)', 'Bethesda, MD', 'Batman, Daredevil, Captain America, Uncanny X-Men', 'https://imagecomics.com/creators/view/ed-brubaker', 'NO TWITTER', 'NO FACEBOOK'); 

我得到的错误是:

  

Msg 8152,Level 16,State 14,Line 1
  字符串或二进制数据将被截断。

有什么建议吗?

2 个答案:

答案 0 :(得分:5)

您正在寻求建议。

首先,请勿使用char()使用varchar()。在字符串末尾的空格中占用数据的所有空间是荒谬的。

其次,生物可能不够长。选择varchar(8000)varchar(max)。前者是SQL Server支持的最长的“非无限”字符串。后者基本上是无限长度(好吧,不是很好,但对于大多数用途来说足够好)。

此外,其他列应该更长。我建议您制作所有内容varchar(8000)nvarchar(8000)nvarchar(max) - 毕竟,您可能会获得非ASCII字符。

答案 1 :(得分:0)

WriterPastSeries是49个字符,应该是30个。