bev*_*qua 25 sql sql-server string sql-server-2008
是什么区别char,nchar,ntext,nvarchar,text和varchar在SQL?
是否真的有这些类型的应用案例,或者其中一些只是被弃用?
Rem*_*anu 41
text并且ntext已弃用,所以我们暂时省略它们.剩下的就是3个维度:
N在名称前面表示Unicodevar表示变量,否则固定(max)长度表示BLOB,否则为行内值因此,您可以阅读任何类型的含义:
CHAR(10):是一个行内固定长度非Unicode,大小为10NVARCHAR(256):是一个行内可变长度Unicode,大小可达256VARCHAR(MAX):是一个BLOB变长非Unicode不推荐使用的类型text和ntext对应新的类型varchar(max),并nvarchar(max)分别.
当你去到细节,意义in-row与BLOB模糊的小长度为发动机可以优化存储和列拉BLOB或推行内价值为"小斑点"分配单元,但是这仅仅是一个实施细节.请参见表和索引组织.
从编程的角度来看,所有类型:CHAR,VARCHAR,NCHAR,NVARCHAR,VARCHAR(MAX)和NVARCHAR(MAX),支持统一的串API:字符串函数.旧的,过时,类型TEXT和NTEXT做不支持这个API,他们有一个独立的,deperated,TEXT API来处理.您不应该使用已弃用的类型.
BLOB类型通过使用UPDATE table SET column.WRITE(@value, @offset)语法支持高效的就地更新.
当表上的行压缩时,固定长度和可变长度类型之间的差异消失.启用行压缩后,固定长度类型和可变长度以相同格式存储,并且尾随空格不存储在磁盘上,请参阅行压缩实现.请注意,页面压缩意味着行压缩.
另外 - textchar和ntext已被弃用为varchar(max)和nvarchar(max)