问高手一个有难度的查询在一个数据库中有一个表存有数万篇文章,字段content为文章内容所在字段,打开表看不到文章内容“long----”
问题:
1、把每一篇文章的
“网站”换为“电子商务网站”
“学校”换为“北京大学”
“学生”换为“本科生”
特别之处时:要求每篇文章中间同一内容只替换一次,也即只替换一处。例如某篇文章有多处“学校”,但要求只替换一处。2、在每篇文章第三段的结尾处加上一个“中国考网.cn”的链接。

解决方案 »

  1.   

    字段content的数据类型是什么?
      

  2.   

    打开表看不到文章内容“long----”
    呵呵,是TEXT字段这样的字段是不能使用UPDATE的,只能额外写程序循环记录,在程序中进行更改
      

  3.   

    楼主问题已经很清楚了,“long----”当然是<long text>,那自然就是ntext类型,还用问?
    楼主没有有求是第几次出现,那自然是不论第几次都行,这个类型的字段是可以update的,只是如果要求替换一次,倒还请高手了。
      

  4.   

    把ntext convert(varchar(8000),字段) 然后用 charindex('关键字',cast(字段 as varchar(8000)) 的位置.然后update 一下.
      

  5.   

    text字段,是不可以UPDATE的。如果文章比较长,转换成varchar8000是有可能丢失内容。使用UPDATETEXT的话,比较麻烦,使用程序来控制的话,几分种就写好了的
      

  6.   

    --CREATE TABLE t1 (c1 int, c2 ntext)
    TRUNCATE TABLE t1
    EXEC sp_tableoption 't1', 'text in row', 'on'
    INSERT t1 VALUES ('1','要搜索的行如果未通过WHERE子句限制要搜索的行通过询将返回表中的所有行对在其中找到该模式的所有行报告非零值,对在其中未找到该模式的所有行报告零值。')
    GO
    BEGIN TRAN
       DECLARE @ptrval VARBINARY(16),@find int
       SELECT @ptrval = TEXTPTR(c2),@find=PATINDEX('%通过%', c2)
       FROM t1
       WHERE c1 = 1
       set @find=@find-1
       UPDATETEXT t1.c2 @ptrval @find 2 '经过'
       READTEXT t1.c2 @ptrval 0 60
    COMMIT要搜索的行如果未经过WHERE子句限制要搜索的行通过询将返回表中的所有行对在其中找到该模式的所有行报告非零值,对在其中未