用updatetext加游标写吧.
sql 2005就可以直接加起来.

解决方案 »

  1.   

    --  示例数据 
    CREATE TABLE table1(id int, value nvarchar(100))
    INSERT table1 SELECT 1, 'aa'
    UNION ALL SELECT 2, 'bb'
    UNION ALL SELECT 2, 'cc'CREATE TABLE table2(id int, comment ntext)
    GO-- 写入处理
    DECLARE 
    @s nvarchar(4000),
    @p binary(16),
    @value nvarchar(100)-- 初始化 table2
    INSERT table2 VALUES(1, N'')-- 写的指针
    SELECT @p = TEXTPTR(comment)
    FROM table2-- 读 table1 的数据写入 table2
    DECLARE tb CURSOR LOCAL
    FOR
    SELECT value FROM table1 ORDER BY id
    OPEN tb
    FETCH tb INTO @value
    WHILE @@FETCH_STATUS = 0
    BEGIN
    SET @s = @value + ','
    UPDATETEXT table2.comment @p NULL 0 @s FETCH tb INTO @value
    END
    CLOSE tb
    DEALLOCATE tb
    DECLARE @l int
    SELECT @l = DATALENGTH(comment) /2 - 1 FROM table2
    UPDATETEXT table2.comment @p @l 1 ''SELECT * FROM table2
    GODROP TABLE table1, table2
      

  2.   

    当然, 这个处理还可以优化, 比如先把value组合成差不多4000长度的时候再写入, 这样可以减少写入的次数
      

  3.   

    非常感谢 zjcxc(邹建) ! 有机会多向你请教!
      

  4.   

    再请教一下, 你说 sql  2005就可以直接加起来, 应该如何操作?
      

  5.   

    想写入到一个TEXT的表中,再取
      

  6.   

    sql 2005定义 nvarchar(max) 类型的变量, 它的长度和 ntext 一样的, 而操作上和普通的nvarchar方法一样的.所以没有任何技巧上可言, 只是支持的问题.