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

yczealot 2008-03-26 05:05:20
提示输入的值与列的数据长度不一致,或者超出网格缓冲区限制,
但是在查询分析器中用
insert into 语句来插入就可以,请问是为什么呢?
...全文
332 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
找个沙发坐下来看

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧