分析SQL PRINT超长的字符串

作者:亂馬客  发布日期:2012-12-24 18:05:43

如果讯息字符串不是 Unicode 字符串,它的长度可以多达 8,000 个字符;如果它是 Unicode 字符串,则可以多达 4,000 个字符。 较长字符串会被截断。
varchar(max) 和 nvarchar(max) 数据类型会被截断为不大于 varchar(8000) 和 nvarchar(4000) 的数据类型。

 

那如果要PRINT NVARCHAR(MAX)的字符串呢? 就只好分次PRINT出去啦,如下,每4,000个字PRINT出去,

DECLARE @DYNAMIC_SQL NVARCHAR(MAX)

--建立一个超过 4,000 字符的变量
SET @DYNAMIC_SQL = N'select 1 as one, 2 as two, 3 as three'
WHILE LEN(@DYNAMIC_SQL) < 4000
BEGIN
 SET @DYNAMIC_SQL = @DYNAMIC_SQL + CHAR(13) +  N'union all select 1 as one, 2 as two, 3 as three'
END

--一次最多只会PRINT 4,000 个字,所以后面的会被截断  www.it165.net
PRINT '--PRINT ALL'
PRINT @DYNAMIC_SQL

--要全部PRINT出来需要分开来PRINT
--每4,000个字就PRINT出来
DECLARE @START_OFFSET INT
DECLARE @LEN INT
SET @START_OFFSET = 0
SET @LEN = 4000
PRINT '--PRINT BATCH'
WHILE (@START_OFFSET < LEN(@DYNAMIC_SQL))
BEGIN
 PRINT SUBSTRING(@DYNAMIC_SQL, @START_OFFSET, @LEN)
 SET @START_OFFSET = @START_OFFSET + @LEN
END
--再把剩下的给PRINT出来
PRINT SUBSTRING(@DYNAMIC_SQL, @START_OFFSET, @LEN)




 
 
Tag标签: SQL   PRINT  
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规