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

发布于 2024-11-07 14:23:56 字数 396 浏览 0 评论 0原文

我有一个正在尝试解决的问题,但解决方案并不明显。由于我无法使用文本类型的临时变量,因此我在解决这个问题时遇到了一些麻烦。

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

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

Document <-> DocumentChunks 是一对多的关系。

我需要将所有 TextChunk 值与每个值后面的回车换行符连接在一起,并使用它来更新文档表中相应的 DocumentText 列。

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

感谢所有建议!

I have a problem I'm trying to solve and a solution is not readily apparent. Since I cannot use temporary variables of type Text, I am having some trouble getting this figured out.

First table (DocumentChunks) has two columns - DocumentID (int - foreign key) and TextChunk (Text)

Second table (Document) has many columns including DocumentID (int - primary key) and DocumentText (Text)

Document <-> DocumentChunks is a one-to-many relationship.

I need to concat all the TextChunk values together with a carriage return line feed after each, and use that to update the corresponding DocumentText column in the Document table.

I've seen plenty of example using temporary variables, but I can't use them.

All suggestions are appreciated!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

猫弦 2024-11-14 14:23:56

那么你可以尝试标量函数。在您的更新查询中使用它,例如:

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

但我认为值得一试。

Well you could attempt a scalar function. Use this in your update query like:

SET DocumentText=fn_ConcatTextChunks(Document.DocumentID)

The only problem is that you can't use a text return type or local variables in SQL Server 2000 in a scalar function. So if your data is too large, this won't work.

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

but I suppose it's worth a shot.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文