我有一个包含列数据类型文本的表。我想使用SSMS(也可以使用其他工具)和insert语句在此列中插入数据。
Update dbo.xyz set data = 'query of length 31232 characters' where id = 1
如何插入它当我通过SSMS进行插入时,只插入前8000个字符。
答案 0 :(得分:1)
我认为您的'query of length 31232 characters'
存在问题,我举一个例子。
我创建了类似于你的xyz表,其id为数据类型为text
的列Col。
然后我插入了2行并对其进行了2次更新,请注意,在一种情况下,我使用replicate('a', 32000)
进行更新,而使用replicate(cast('a' as varchar(max)), 32000)
进行更新,在第一种情况下,只插入了8000个字符,但是& #39;不是INSERT
问题。
这里的问题是,如果您没有明确地强制转换为varchar(max)
,那么您的字符串会被截断为8000
个字符。
create table dbo.xyz(id int, col text);
insert into dbo.xyz(id) values(1), (2);
Update dbo.xyz
set col = replicate('a', 32000)
where id = 1;
Update dbo.xyz
set col = replicate(cast('a' as varchar(max)), 32000)
where id = 2;
select id, len(cast(col as varchar(max)))
from dbo.xyz;
答案 1 :(得分:0)
您可以创建VARCHAR(MAX)或NVARCHAR(MAX)数据类型,使数据存储最多可达2 GB