gpt4 book ai didi

SQL 串联填充 tempDB

转载 作者:行者123 更新时间:2023-12-04 06:26:40 24 4
gpt4 key购买 nike

我们正在尝试使用单个查询连接 SQL 中可能的数千行文本。我们当前的查询如下所示:

DECLARE @concatText NVARCHAR(MAX) 
SET @concatText = ''

UPDATE TOP (SELECT MAX(PageNumber) + 1 FROM #OrderedPages) [#OrderedPages]
SET @concatText = @concatText + [ColumnText] + '
'
WHERE (RTRIM(LTRIM([ColumnText])) != '')

从功能的角度来看,这工作得很好。我们遇到的唯一问题是有时 ColumnText 的长度可能是几千字节。因此,当我们有数千行时,我们正在填充 tempDB。

我们提出的最佳理由是,当我们对 @concatText 进行这些更新时,SQL 使用隐式事务,因此字符串实际上是不可变的。

我们正试图找出解决这个问题的好方法,到目前为止,我们有两种可能的解决方案:
1)在.NET中进行连接。这是一个不错的选择,但有很多数据可能会通过网络返回。

2) 使用 .WRITE,其操作方式与 .NET 的 String.Join 方法类似。我无法弄清楚这个的语法,因为 BoL 没有涵盖这个级别的 SQL 恶作剧。

这让我想到了一个问题:.WRITE 会起作用吗?如果是这样,语法是什么?如果没有,是否还有其他方法可以在不向 .NET 发送数据的情况下执行此操作?我们不能用 FOR XML因为我们的文本可能包含非法的 XML 字符。

提前致谢。

最佳答案

正如@Martin 的评论中所建议的那样,我会考虑使用 CLR 集成。 CLR 聚合函数可能只是票证。

关于SQL 串联填充 tempDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5967309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com