如何使用连接多行TEXT来更新SQL Server 2000中的另一个TEXT列?

时间:2011-05-17 13:40:13

标签: sql text sql-server-2000 concatenation sql-update

我有一个问题,我正在努力解决,解决方案并不明显。由于我不能使用Text类型的临时变量,因此我无法解决这个问题。

第一个表(DocumentChunks)有两列 - DocumentID(int - 外键)和TextChunk(Text)

第二个表(Document)有很多列,包括DocumentID(int - 主键)和DocumentText(Text)

文件< - > DocumentChunks是一对多关系。

我需要将每个TextChunk值连同一个回车换行连接在一起,然后用它来更新Document表中相应的DocumentText列。

我见过很多使用临时变量的例子,但我不能使用它们。

所有建议都表示赞赏!

1 个答案:

答案 0 :(得分:0)

你可以尝试一个标量函数。在更新查询中使用此选项,如:

SET DocumentText=fn_ConcatTextChunks(Document.DocumentID)

唯一的问题是您不能在标量函数中使用SQL Server 2000中的文本返回类型或局部变量。因此,如果您的数据太大,这将无效。

CREATE FUNCTION [dbo].[fn_ContatTextChunks]
(
    @DocumentID int
)
RETURNS varchar(8000)
AS
BEGIN
    -- Declare the return variable here
    DECLARE @Result varchar(8000)

    SELECT @Result = COALESCE(@Result + '\n', '') + CAST(dc.TextChunk As varchar) 
    FROM DocumentChunks dc
    WHERE dc.DocumentID=@DocumentID

    -- Return the result of the function    
    IF @Result IS NULL BEGIN
        SET @Result = ''
    END 
    RETURN @Result
END

但我想这值得一试。