将一段中文大文本直接复制到企业管理器某个表的网格中,该字段为TEXT字段,总是更新失败,为什么?

yczealot 2008-03-26 05:05:20
提示输入的值与列的数据长度不一致,或者超出网格缓冲区限制,
但是在查询分析器中用
insert into 语句来插入就可以,请问是为什么呢?
...全文
291 点赞 收藏 19
写回复
19 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
yczealot 2008-03-27
已经试过了,可以直接插入的文字长度最大为 898个单字节字符,或者449个双字节字符,奇怪不奇怪?
回复
SatSun 2008-03-27
00
回复
SatSun 2008-03-27
00
回复
pt1314917 2008-03-27

--更新text字段的值,不能直接更新
create table PE_Soft(SoftIntro text,ChannelID integer)
insert into PE_Soft
select 'aaa ',1004
union all
select 'bbb ',1003
union all
select 'ccc ',1002

declare @ptr binary(16)
select @ptr=textptr(SoftIntro) from PE_Soft where ChannelID=1002
updatetext PE_Soft.SoftIntro @ptr null 0 'testing '
select * from PE_Soft


回复
jtg98g3 2008-03-27
那是企业分析器网格的错误。那个格子操作的数据是长度是有限制的。
铁主给我分啊。

回复
-狙击手- 2008-03-26
可以为在数据行中存储的 text、ntext 和 image 字符串指定一个从 24 到 7000 字节的最大长度(可选):


是不是限制 在7000呀

回复
yczealot 2008-03-26
我想问,如果text in row没有开启的话,可以在企业管理器中直接插入更新的text字段的文本长度是多少
回复
yyyyzzzz_2002 2008-03-26
如果是sql server2000, 那只能如  dawugui  同学那样处理
如果是sql server2005,可以将字段定义为varchar(max),或者nvarchar(max),当然也可以定义为xml
varchar(max),或者nvarchar(max),可以想varchar(20),nvarchar(20)一样的处理方式,不会象text
字段那样处理.一旦用text字段,查询,更新会受很多限制.
回复
yczealot 2008-03-26
SELECT OBJECTPROPERTY(OBJECT_ID('test1'),'TableTextInRowLimit')

显示为0,但是直接输入少量的字符还是可以插入的或者修改的
回复
wzy_love_sly 2008-03-26
马甲都来了?!
回复
-狙击手- 2008-03-26
text in row 是多少
回复
dawugui 2008-03-26
ntext、text 和 image
用于存储大型非 Unicode 字符、Unicode 字符及二进制数据的固定长度和可变长度数据类型。Unicode 数据使用 UNICODE UCS-2 字符集。

ntext

可变长度 Unicode 数据的最大长度为 230 - 1 (1,073,741,823) 个字符。存储大小是所输入字符个数的两倍(以字节为单位)。ntext 在 SQL-92 中的同义词是 national text。

text

服务器代码页中的可变长度非 Unicode 数据的最大长度为 231-1 (2,147,483,647) 个字符。当服务器代码页使用双字节字符时,存储量仍是 2,147,483,647 字节。存储大小可能小于 2,147,483,647 字节(取决于字符串)。

image

可变长度二进制数据介于 0 与 231-1 (2,147,483,647) 字节之间。

注释
下面的函数和语句可以与 ntext、text 或 image 数据一起使用。

函数 语句
DATALENGTH READTEXT
PATINDEX SET TEXTSIZE
SUBSTRING UPDATETEXT
TEXTPTR WRITETEXT
TEXTVALID
回复
dawugui 2008-03-26
[Quote=引用楼主 yczealot 的帖子:]
提示输入的值与列的数据长度不一致,或者超出网格缓冲区限制,
但是在查询分析器中用
insert into 语句来插入就可以,请问是为什么呢?
[/Quote]
text,image不能直接显示或修改其值.
(因为其为二进制编码)

--更新text字段的值
create table PE_Soft(SoftIntro text,ChannelID integer)
insert into PE_Soft
select 'aaa ',1004
union all
select 'bbb ',1003
union all
select 'ccc ',1002

declare @ptr binary(16)
select @ptr=textptr(SoftIntro) from PE_Soft where ChannelID=1002
updatetext PE_Soft.SoftIntro @ptr null 0 'testing '
select * from PE_Soft

drop table PE_Soft
回复
lllyyymmm 2008-03-26
没有
回复
青锋-SS 2008-03-26
[Quote=引用 4 楼 sdsxlj 的回复:]
帮顶有分不?
[/Quote]
回复
sdsxlj 2008-03-26
帮顶有分不?
回复
青锋-SS 2008-03-26
有多余空格?
回复
wuxinyuzhu 2008-03-26
bd
回复
-狙击手- 2008-03-26
找个沙发坐下来看
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-03-26 05:05
社区公告
暂无公告