sql Server 实例包括用户定义的名为 sysname 的数据类型。sysname 用于表列、变量以及用于存储对象名的存储过程参数。sysname 的精确定义与标识符规则相关;因此,sql Server 的各个实例会有所不同。sysname 与 nvarchar(128) 作用相同。sql Server 6.5 或早期版本仅支持较小的标识符;因此,在早期版本中,sysname 被定义为 varchar(30)。
重要提示:
在区分大小写或使用二进制排序规则的数据库中,仅当 sysname 以小写显示时,才会被识别为 sql Server 系统数据类型。
------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------
select * from systypes
你可以看到系统支持的所有类型,其中有sysname
------------------------------------------------------------------------------------------------------------------------------------------
sysname等价于not null 的nvarchar(128),这于它显示的leng-256是表示占用256个字节的空间.但是只能存128个字符(一个字符占 两个字节).
------------------------------------------------------------------------------------------------------------------------------------------
那将sysname换成nvarchar(128)也没有什么吗? 不是的,sysname等价于not null的varchar(128).你换成了varchar(128)就少了not null的限制了. 我的感觉这个sysname字段就是系统自己在varchar(256)的基础上封装的一个数据类型.长度256,不可为空,主要是用来作为系统中一些元数据的类型的,比较方便,省得每次都指明长度和为空性. 你可以用如下的语句自己比较一下 exec sp_help sysname go exec sp_help varchar