mssql sqlserver 非常见数据类型 bit sql_variant sysname 用法简介与分享


摘要:
下文主要讲述sql server中,非常见的数据类型 bit sql_variant sysname的用法简介与分享


一、bit

bit类型简介:bit在sql server只,只能放入三个值 0、1、null,
当我们向bit中放入字符串时,如果字符串的值为true 则自动变为1存储 如果为false则转换为0 进行存储,如果放入其它字符或字符串,则sql脚本会产生相应的错误信息。
bit类型的存储空间:
bit数据类型只占用一个比特位的存储空间。
——————————
例:

 declare @t1 bit
declare @t2 bit
declare @t3 bit
declare @t4 bit
declare @t5 bit 
----------------
set @t1 =1
set @t2 =0
set @t3='true'
set @t4='false'
----------------
select @t1,@t2,@t3,@t4,@t5


二,sql_variant

sql_variant类型简介:可用于存储 SQL Server 支持的各种数据类型的值,是所有类型的基类型。
不能对sql_variant类型进行算术和字符操作,不能对sql_variant类型进行隐式转换成其他数据类型,
sql_variant目前只支持显式转换。
sql_variant类型的存储空间:sql_variant的最大长度可以是8016字节,它包括 基类型和基础类型值,实际可存储基础类型值为8000字节

sql_variant可以 8016 字节的最大长度。 这包括基类型信息和基类型值。 实际基类型值的最大长度是 8,000 个字节。
A sql_variant数据类型必须首先转换为它的基数据类型值参与等加法和减法操作之前。
sql_variant可以分配默认值。 该数据类型还可以将 NULL 作为其基础值,但是 NULL 值没有关联的基类型。 此外, sql_variant不能有另一个sql_variant为其基类型。
—————————————————-
例:

   declare @tmp1 sql_variant
declare @tmp2 sql_variant
declare @tmp3 sql_variant

set @tmp1 ='true'
set @tmp2 = 88
set @tmp3 ='2015-10-1'

select @tmp1,@tmp2,@tmp3,
cast(@tmp1 as bit),cast(@tmp2 as int),
cast(@tmp3 as datetime)


三,sysname

sysname类型简介:sysname是一个系统数据类型,用于定义表列、变量以及存储过程的参数,是nvarchar(128) 的同义词,
当该类型用于定义table column时,SQL Server 会自动添加 not null,等同于nvarchar(128) not null。
sysname类型的存储空间:sysname最大存储空间为256字节,最小为2字节
例:

 exec sp_help sysname 
 -----------------------
 Type_name	      Storage_type	Length	Prec	Scale	Nullable 
sysname	            nvarchar	256	    128	    NULL	no