您现在的位置是:首页 > 文章详情文章详情

sql 中 对nvarchar(max)存在的误区

会飞的猪 2019-02-21 414人已围观

简介白码驿站是一个面向开发者的知识共享社区,专注于为开发者打造一个纯净的技术交流社区(源码下载,免费在线图片压缩,jquery插件,插件下载,JS/CSS在线压缩。)-白码驿站

问题: 系统有一个发送邮件的存储过程,里面定义了一个变量 @html varchar(Max),将HTML代码存储到变量中, 结果邮件的内容被截断了, 找了很久发现是因为 varchar(max) 原因。在 SQL 中 变量类型定义成varchar(max), 最多只能存储8000字符(以前一直以为是长度不限的)。

我们来验证一下:

                                        
DECLARE @test NVARCHAR(MAX)
SET @test = REPLICATE('*', 9000);
PRINT LEN(@test)
                                

输出:“8000”

我们可以看到, 超过8000的字符全部都被截断了


认识到这一点, 问题就迎刃而解了。虽说只是一个小小的问题,但是如果没有这个概念, 想解决问题还是得花点功夫的。

拓展: 如果需要存储大于8000字符的字符串 , 可以考虑写个判断, 如果大于8000字符的话, 用两个变量存储。


Tags: Sql Server

很赞哦! (1)

系统处理中...