SQL Server中不同字符串类型之间的区别?

bev*_*qua 25 sql sql-server string sql-server-2008

是什么区别char,nchar,ntext,nvarchar,textvarchar在SQL?

是否真的有这些类型的应用案例,或者其中一些只是被弃用?

Rem*_*anu 41

text并且ntext已弃用,所以我们暂时省略它们.剩下的就是3个维度:

  • Unicode(UCS-2)与非unicode:N在名称前面表示Unicode
  • 固定长度与可变长度:var表示变量,否则固定
  • 行内与BLOB:(max)长度表示BLOB,否则为行内值

因此,您可以阅读任何类型的含义:

  • CHAR(10):是一个行内固定长度非Unicode,大小为10
  • NVARCHAR(256):是一个行内可变长度Unicode,大小可达256
  • VARCHAR(MAX):是一个BLOB变长非Unicode

不推荐使用的类型textntext对应新的类型varchar(max),并nvarchar(max)分别.

当你去到细节,意义in-rowBLOB模糊的小长度为发动机可以优化存储和列拉BLOB或推行内价值为"小斑点"分配单元,但是这仅仅是一个实施细节.请参见表和索引组织.

从编程的角度来看,所有类型:CHAR,VARCHAR,NCHAR,NVARCHAR,VARCHAR(MAX)NVARCHAR(MAX),支持统一的串API:字符串函数.旧的,过时,类型TEXTNTEXT支持这个API,他们有一个独立的,deperated,TEXT API来处理.您不应该使用已弃用的类型.

BLOB类型通过使用UPDATE table SET column.WRITE(@value, @offset)语法支持高效的就地更新.

当表上的行压缩时,固定长度和可变长度类型之间的差异消失.启用行压缩后,固定长度类型和可变长度以相同格式存储,并且尾随空格不存储在磁盘上,请参阅行压缩实现.请注意,页面压缩意味着行压缩.


Sac*_*hag 7

  • ' n '表示对unicode字符的支持.
  • char - 指定具有固定长度存储的字符串.分配有或没有数据的空间.
  • varchar - 变长存储.空间的分配与列中的数据长度一样多.
  • text - 存储大量数据.分配的空间为16字节,用于列存储.

另外 - textchar和ntext已被弃用为varchar(max)和nvarchar(max)

  • -1来自我.space不以16字节为单位分配.它在列存储中占用16个字节,但它的分配方式不同.其余的都没问题. (3认同)