gpt4 book ai didi

sql - SQL Server如何获取一个巨大字段的内容?

转载 作者:行者123 更新时间:2023-12-01 22:43:48 25 4
gpt4 key购买 nike

我在 SQL Server 2008 上,我有一个包含大量数据的字段。当我申请...

DATALENGTH(field_name)

...我知道我的字段长 288.946 个字符,但是在 MS SQL Server Management Studio 上,当我尝试将该字段的简单 SELECT 结果复制粘贴到文本编辑器 (Notepad+) 中时,它似乎 SQL Server 只包含 43.679 个字符......或者是 Windows 中用于复制文本的缓冲区正在使用最大字符数?我已经测试过,限制不是 Notepad+ 行大小或其他东西......如果我复制粘贴到 SQL Server 中的新查询窗口,结果是相同的文本字符串限制为 43.679 个字符。

好吧,问题是:我需要复制粘贴该字段的全部内容...我应该在查询中做一些特别的事情吗?谢谢。

最佳答案

我在 SQL Server 2008 的测试版期间针对此提交了一个错误。他们将其关闭为“已修复”,但随后评论说这是一个 Vista 问题的重复。这让我感到惊讶,因为它也出现在其他几个 SSMS/操作系统组合中,包括 Windows 7 上的 Denali CTP1。

http://connect.microsoft.com/SQLServer/feedback/details/344150/ssms-grid-will-not-display-43-679-characters-from-varchar-max

所以,我不确定他们为什么称它为固定的,因为它肯定仍然是一个真正的限制。

如果小于 64K,您可以转换为 XML,然后在网格模式下单击结果。不幸的是,除此之外,SSMS 能够为您提供的功能非常有限。您需要按照其他人的建议导出到平面文件,使用不同的程序来完整提取数据,或者手动将 40000 个字符的 block 粘贴在一起。在您的示例中,您可以执行以下操作:

DECLARE @foo TABLE (a VARCHAR(MAX));

INSERT @foo(a) SELECT REPLICATE('A', 8000);

DECLARE @i INT = 1;

WHILE @i < 36
BEGIN
UPDATE @foo SET a += REPLICATE(CHAR(@i+64), 8000);
SET @i += 1;
END

SELECT DATALENGTH(a), a FROM @foo;

SELECT SUBSTRING(a, 1, 40000),
SUBSTRING(a, 40001, 40000),
SUBSTRING(a, 80001, 40000),
SUBSTRING(a, 120001, 40000),
SUBSTRING(a, 160001, 40000),
SUBSTRING(a, 200001, 40000),
SUBSTRING(a, 240001, 40000),
SUBSTRING(a, 280001, 40000)
FROM @foo;

但是您必须通过为值 > 320K 的列添加更多操作来进行调整。

关于sql - SQL Server如何获取一个巨大字段的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6576150/

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