sql中nvarchar(max)长度测试

nvarchar(max)长度测试:在使用convert强制类型转化之后 文本长度可以突破8000的上限。
并且nvarchar(max)的最大长度可达到2^31
以下为验证SQL:

Declare @A nvarchar(max)
set @A=replicate(‘*‘,9000);
print len(@A)

set @A=replicate(CONVERT(nvarchar(max),‘*‘),9000);
print len(@A)

set @A=replicate(CONVERT(nvarchar(max),‘1‘),POWER(2,26));
print len(@A)

set @A=replicate(CONVERT(nvarchar(max),‘2‘),CAST( POWER(2,30) as bigint) *2);
print len(@A)

不过在表中max的长度就不会那么长了,一般限制就是4000/8000,具体数值估计是要依赖于SQLServer版本了。以下是一个例子:

create table a (

data nvarchar(max)

)

declare @a nvarchar(max)

set @a = REPLICATE(‘a‘, 8000) + ‘b‘;

--delete from a

insert into a values(@a)

select * from a

实际上select回来的数据只有8000字符,b没有存到数据库中。

因此一旦要存储大于4000/8000的数据时最好还是不要依赖nvarchar(max),可以考虑ntext之类的。

发现:convert(nvarchar(2),‘abcde‘)的操作是一个类型转化的过程,而不是数据存储的过程,所以就不存在空间大小不够导致的报错。
 而把‘abcde’插入到一个类型为nvarchar(2)的字段里时,就会提示截断字符串,因为建表时这个字段的长度就定义为只能存放2个unicode编码的长度,不论中英文。 空间不够,所以报错。

时间: 2024-10-31 16:03:41

sql中nvarchar(max)长度测试的相关文章

SQL Server中nvarchar(max)

SQL Server中,存储较小的数据,可以使用varchar(n).nvarchar(n) 和 varbinary(n)类型,存储大的数据,使用varchar(max).nvarchar(max)和varbinary(max) 代替 text.ntext 和 image 数据类型. 其中 varchar(max) 代替 text;nvarchar(max) 代替 ntext;varbinary(max) 代替 image NTEXT与NVARCHAR(MAX)的区别 NTEXT 默认情况下,N

英文操作系统中中文乱码(SQL中 NVARCHAR 和 VARCHAR区别)

  varchar在SQL Server中是采用单字节来存储数据的,nvarchar是使用Unico来存储数据的.中文字符存储到SQL Server中会保存为两个字节(一般采用Unico编码),英文字符保存到数据库中,如果字段的类型为varchar,则只会占用一个字节,而如果字段 的类型为nvarchar,则会占用两个字节. 正常情况下,我们使用varchar也可以存储中文字符,但是如果遇到操作系统是英文操 作系统并且对中文字体的支持不全面时, 在SQL Server存储中文字符为varchar

SQL中Len与DataLength区别

SQL中求字符串长度问题 一.LEN(Param) 求字符串的长度 DataLength(param) 求字符串所占的字节长度 二.LEN不返回文本之后的空格长度 而DataLenth则不同 三.针对NText.text.image这样的数据类型 求长度DataLenth非常有用. 因为:1.这些数据类型对应的内容是可变的 .DataLength计算所占内存的字节数 2.以上三种数据类型Len是无法计算的. 以上内容仅供学习使用,若有不同意见 ,及时指出,一起学习

NVARCHAR(MAX) 的最大长度

本文使用的环境是SQL Server 2017, 主机是64位操作系统. 大家都知道,Micorosoft Docs对 max参数的定义是:max 指定最大的存储空间是2GB,这个结论是正确的. nvarchar [ ( n | max ) ]Variable-size string data. n defines the string size in byte-pairs and can be a value from 1 through 4,000. max indicates that t

SQL中varchar和nvarchar有什么区别?

varchar(n)长度为 n 个字节的可变长度且非 Unicode 的字符数据.n 必须是一个介于 1 和 8,000 之间的数值.存储大小为输入数据的字节的实际长度,而不是 n 个字节. nvarchar(n)包含 n 个字符的可变长度 Unicode 字符数据.n 的值必须介于 1 与 4,000 之间.字节的存储大小是所输入字符个数的两倍. 两字段分别有字段值:我和coffee那么varchar字段占2×2+6=10个字节的存储空间,而nvarchar字段占8×2=16个字节的存储空间.

SQL中char、varchar、nvarchar的区别

SQL中char.varchar.nvarchar的区别: char    char是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值.当你输入的字符大于指定的数时,它会截取超出的字符.   nvarchar(n)    包含 n 个字符的可变长度 Unicode 字符数据.n 的值必须介于 1 与 4,000 之间.字节的存储大小是所输入字符个数的两倍.所输入的数据字符长度可以为零.       varchar[(n)]      长度为

SQL中char nchar varchar nvarchar text ntext的区别

类型 长度 使用说明 长度说明 char(n) 定长 索引效率高,程序里面使用trim去除多余的空白 n必须是一个介于1和8000之间的数值,存储大小为n个字节 varchar(n) 变长 效率没char高 灵活 n必须是一个介于1和8000之间的数值.存储大小为输入数据的字节的实际长度,而不是n个字节 text(n) 变长 非Unicode数据 不用指定长度 nchar(n) 定长 处理Unicode数据类型(所有的字符使用两个字节表示) n的值必须介于1和4000之间,存储大小为n字节的两倍

sql中char nchar varchar nvarchar的区别

char    char是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值.当你输入的字符大于指定的数时,它会截取超出的字符.   nvarchar(n)    包含 n 个字符的可变长度 Unicode 字符数据.n 的值必须介于 1 与 4,000 之间.字节的存储大小是所输入字符个数的两倍.所输入的数据字符长度可以为零.      varchar[(n)]     长度为 n 个字节的可变长度且非 Unicode 的字符数据.n 必须是

SQL中数据类型char/varchar/nvarchar/nchar/text/ntext的区别

.CHAR.CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充,所以在读取的时候可能要多次用到trim(). 2.VARCHAR.存储变长数据,但存储效率没有CHAR高.如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的.VARCHAR类型的实际长度是它的值的实际长度+1.为什么“+1”呢?这一个字节用于保存实际