祝愿大家身体健康!

 站点注册  找回密码
 站点注册

QQ登录

只需一步,快速开始

查看: 6223|回复: 2

[求助]如何更新表中TEXT类型字段的值

[复制链接]

[求助]如何更新表中TEXT类型字段的值

[复制链接]
TIMMY

主题

0

回帖

3

积分

新手上路

积分
3
贡献
在线时间
小时
2008-3-6 22:43:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?站点注册

×

两个TEXT字段的内容相加

用WRITETEXT只能覆盖数据,

updatetext 则不存在!!

 

共享共进共赢Sharing And Win-win Results
SYBASEBBS - 免责申明1、欢迎访问“SYBASEBBS.COM”,本文内容及相关资源来源于网络,版权归版权方所有!本站原创内容版权归本站所有,请勿转载!
2、本文内容仅代表作者观点,不代表本站立场,作者自负,本站资源仅供学习研究,请勿非法使用,否则后果自负!请下载后24小时内删除!
3、本文内容,包括但不限于源码、文字、图片等,仅供参考。本站不对其安全性,正确性等作出保证。但本站会尽量审核会员发表的内容。
4、如本帖侵犯到任何版权问题,请立即告知本站 ,本站将及时删除并致以最深的歉意!客服邮箱:admin@sybasebbs.com
ehxz

主题

0

回帖

58万

积分

管理员

积分
588651
贡献
在线时间
小时
2008-3-7 11:03:14 | 显示全部楼层

CSDN上看来的东东:

Create   Table   #Text_Temp(cDoAble   text,cStatus   Text,cEffect   Text,cVote   Text)  
  Insert   into     #Text_Temp   (cDoAble,cStatus,cEffect,cVote)   Values('','1','2','3')  
  Insert   into     #Text_Temp   (cDoAble,cStatus,cEffect,cVote)   Values('','A','B','C')  
  Insert   into     #Text_Temp   (cDoAble,cStatus,cEffect,cVote)   Values('','I','II','III')  
  Insert   into     #Text_Temp   (cDoAble,cStatus,cEffect,cVote)   Values('','!','@','#')  
   
  --------想实现如下的语句的效果-----------------------------------------  
  --   UPdate     cDoAble     With   '[现状分析]'+   CHAR(13)+    
  -- +"     "+Rtrim(   cStatus   )+CHAR(13)+'[目标效果分析]'+CHAR(13)+  
  -- +"     "+Rtrim(   cEffect   )+CHAR(13)+'[建议及对策]'+CHAR(13)+  
  -- +"     "+Rtrim(   cVote   )

 

A:

--如果各字段内容实际长度未超过8000,可用转换实现,如:  
  .......................  
  declare   @DoAble   varchar(8000)  
  Select   @DoAble=isNULL(@DoAble,'')+'[现状分析]'+   CHAR(13)+    
                    +'     '+Rtrim(cast(cStatus   as   varchar))+CHAR(13)+'[目标效果分析]'+CHAR(13)+  
                    +'     '+Rtrim(cast(cEffect   as   varchar))+CHAR(13)+'[建议及对策]'+CHAR(13)+  
                  +'     '+Rtrim(cast(cVote   as   varchar))  
  from   #Text_Temp  
  print   @DoAble

B:

下面的代码演示,   如果把两个   text   列相加,   更新到其中一个   text   列中  
  USE   tempdb  
  GO  
   
  --   测试环境  
  CREATE   TABLE   ta(id   int   identity(1,   1),   col1   text)  
  CREATE   TABLE   tb(id   int   identity(1,   1),   col1   text)  
  INSERT   ta   SELECT   REPLICATE('abc',   8000)  
  INSERT   tb   SELECT   REPLICATE('cba',   8000)  
   
  --   show   insert   data   length  
  SELECT   [ta.col1]   =   DATALENGTH(col1)   FROM   ta  
  SELECT   [tb.col1]   =   DATALENGTH(col1)   FROM   tb  
  GO  
   
  --   更新   ta,   让   ta.col1   =   ta.col1   +   '   '   +   tb.col1  
  --                     条件:   ta.id   =   1,   tb.id   =   1  
  DECLARE   @p1   binary(16),   @p2   binary(16)  
   
  SELECT   @p1   =   TEXTPTR(col1)   FROM   ta   (NOLOCK)  
  WHERE   id   =   1  
  IF   TEXTVALID('ta.col1',   @p1)   =   0  
  BEGIN  
          RAISERROR('ta.col1   invalid',   16,   1)  
          RETURN  
  END  
   
  SELECT   @p2   =   TEXTPTR(col1)   FROM   tb   (NOLOCK)  
  WHERE   id   =   1  
  IF   TEXTVALID('tb.col1',   @p2)   =   0  
  BEGIN  
          RAISERROR('tb.col1   invalid',   16,   1)  
          RETURN  
  END  
   
  --   insert   space   split  
  UPDATETEXT   ta.col1   @p1   NULL   0   '-'  
   
  --insert   tb.col1  
  UPDATETEXT   ta.col1   @p1   NULL   0   tb.col1   @p2  
  GO  
   
  --   show   update   result  
  SELECT   [ta.col1]   =   SUBSTRING(col1,   1,   10)   +   '...'   +   SUBSTRING(col1,   15988,   100),    
          [ta.col1_length]=   DATALENGTH(col1)  
  FROM   ta  
  WHERE   id   =   1  
  GO  
   
  DROP   TABLE   ta,   tb  

 

共享共进共赢Sharing And Win-win Results
TIMMY 楼主

主题

0

回帖

3

积分

新手上路

积分
3
贡献
在线时间
小时
2008-3-7 16:44:47 | 显示全部楼层

在SYBASE环境中可以实现吗,我的text字符超过8000的,

sybase中UPDATETEXT 可用吗,

 

 

共享共进共赢Sharing And Win-win Results
您需要登录后才可以回帖 登录 | 站点注册

本版积分规则

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com

QQ|Archiver|PowerBuilder(PB)BBS社区 ( 鲁ICP备2021027222号-1 )

GMT+8, 2024-11-23 16:04 , Processed in 0.032675 second(s), 9 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表