我们可以在 SELECT 或 PRINT 语句中获取多少个字符?

How many characters can we get in a SELECT or a PRINT statement?

我有一个名为 QUERY 的 varchar(max) 变量。我在其中存储了大量创建查询。它的长度将近 65000 多个字符。但是每当我打印它或 select 它时,它不会 returns 我得到整个结果。

DECLARE @QUERY AS VARCHAR(MAX)
SET @QUERY='';
//repopulating @QUERY with queries until the lengths reaches more than 65000 
//characters, then

SELECT LEN(REPLACE(@QUERY, 'N', ''))--to check the length
PRINT @QUERY as QUERY --to get the result in print
SELECT @QUERY as QUERY --to get the result in select

我怎样才能得到我的全部结果?所有这些工作都在存储过程中完成。该过程的结果应该是 select 语句中的一堆查询。

尝试

PRINT CAST(@QUERY AS NTEXT)

ntext、text 和 image 数据类型已在最新版本的 Microsoft SQL Server 中删除。避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。

您可以根据脚本长度除以 8000 的计数执行 WHILE 循环。

EG:

DECLARE @Counter INT
SET @Counter = 0
DECLARE @TotalPrints INT
SET @TotalPrints = (LEN(@QUERY) / 8000) + 1
WHILE @Counter < @TotalPrints 
BEGIN
    -- Do your printing...
    SET @Counter = @Counter + 1
END

FIDDLE DEMO