我有以下疑问 -
1. 存储更大量的数据时使用哪种数据类型?
2. 当我们指定 varchar(100) 时,这个 100 表示 100个字符
还是 100个位或字节
?
在SQL Server中
varchar(100) = 100个ASCII字符和102个字节的存储空间
nvarchar(100) = 100个Unicode/ASCII字符和202个字节的存储空间
text和ntext最高可达2GB,但已被弃用(从SQL Server 2005开始),您应该使用varchar(max)和nvarchar(max),它们也可以达到2GB的存储空间
VARCHAR(100)
并非 100 字节,而是 102 字节:http://msdn.microsoft.com/en-us/library/ms176089.aspx。`NVARCHAR` 同理。 - the_voidVARCHAR
数组的大小,而不是起始-结束位置。如果列的大小差异显著,您不应该使用CHAR
而不是VARCHAR
,因为与VARCHAR
相比,这将浪费空间。 - the_voidTEXT可以存储最多64K的数据 - MySQL(例如)还提供了其他变体:TINYTEXT(256字节),MEDIUMTEXT(16MB)和LONGTEXT(4GB)。
VARCHAR(100)列可以容纳最多100个字符的文本。您可以使用VARBINARY存储二进制数据,在这种情况下,VARBINARY(100)字段将容纳最多100个字节。
MySQL
,区别主要与存储需求有关:
VARCHAR
:如果列值需要0-255字节,则为L+1
字节,如果值可能需要超过255字节,则为L+2
字节
TEXT
:其中L<2^16
,则为L+2
字节
这里的L
是输入的实际大小。
假设您正在谈论MS SQL Server:
1)varchar(max)
: varchar(max)
是TEXT的替代品
2)varchar(100)
= 100个字符(单字节ASCII字符)
(而nvarchar(100)
= 100个字符(双字节Unicode字符))
参考:char and varchar (Transact-SQL)
[刚刚发现可能有重复:ms sql server; varchar(MAX) vs TEXT ]
数据类型 TEXT 的长度限制为4000个字符,而新的数据类型 Varchar(max) 则用于存储最大长度的字符或您指定的长度
更多信息请查看这里