Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何将长文本打印到多页_Sql Server - Fatal编程技术网

Sql server 如何将长文本打印到多页

Sql server 如何将长文本打印到多页,sql-server,Sql Server,需要打印SQLvarchar(7900)数据。它不能填充一页。 如何在不打断一个单词的情况下把它分成两页 我不能使用子字符串(FieldA,1,3000)和下一页子字符串(FieldA,3001,6000),因为例如“BOOK”的工作可能会在3000位置的最后一个字母处变为“B”,而“OOK”会显示在下一页中。尝试以下操作: DECLARE @L INT; DECLARE @str varchar(8000); SELECT @str=FieldA FROM your_table WHERE .

需要打印SQL
varchar(7900)
数据。它不能填充一页。 如何在不打断一个单词的情况下把它分成两页

我不能使用
子字符串(FieldA,1,3000)
和下一页
子字符串(FieldA,3001,6000)
,因为例如“BOOK”的工作可能会在3000位置的最后一个字母处变为“B”,而“OOK”会显示在下一页中。

尝试以下操作:

DECLARE @L INT;
DECLARE @str varchar(8000);
SELECT @str=FieldA FROM your_table WHERE ....
SET @L = 1;
IF LEN(@STR)>3000 SET @L=3000;
WHILE @L>2000 AND SUBSTRING (@str, @l, 1) LIKE '[A-Z]'
     SET @L=@L-1;
IF @L>1 BEGIN
    PRINT SUBSTRING(@str, 1, @L);
    PRINT SUBSTRING(@str, @L, LEN(@str)-@L);
END
ELSE
    PRINT @str;
我认为你可以使用:

SUBSTRING(FieldA, 1, CHARINDEX(' ', FieldA, 2995))

数据是否有新行字符?您可以从3000开始减少长度,直到看到非字母,然后执行子字符串(FieldA,1,length)。谢谢您的帮助。谢谢您的帮助!