在SQL Server中,使用数据类型 binary(n) 和 varbinary(n) 存储二进制数据,n是指字节数量:
binary(n):固定长度为 n 字节,其中 n 值从 1 到 8,000 ,存储空间为 n 字节;
varbinary( n | max):可变长度,n 的取值范围为 1 至 8,000,max 是指最大存储空间是 2^31-1 个字节,即最大4GB;
n:在表列定义或变量声明语句中没有指定 n,则默认长度为 1;在CAST 函数中没有指定 n,则默认长度为 30;
在将数据转换为二进制数据时,SQL Server会对生成的二进制数据进行填充或截断,详细的规则是:
填充(或扩展)的二进制数据是16进制的0x00的整数倍,这就是说,填充的字节中每一个bit都是0;
将字符类型转换成二进制数据时,在数据的右侧填充或截断数据,填充数值是0x00;
将其他类型数据转换成二进制数据时,在数据的左侧填充或截断数据,填充数值是0x00;在截断数据时,保留低位的数据,将高位数值截断;
一,初试binary类型定义二进制变量
1,存储单位是Byte
数据类型binary 和 varbinary 占用的存储空间的单位不是bit,而是 byte
declare @varBi binary(1)
set @varBi=1
输出结果是:0x01,结果以16进制编码显示,共8bit。
2,为binary变量赋值
可以使用10进制数据为binary类型的变量赋值,也可以直接使用16进制数值为binary变量赋值;
declare @biA binary(1)
set @biA= 0x01
二,二进制数据的类型转换
1, 数值类型隐式转换成binary类型
系统自动将 int类型隐式转换成binary类型,但是,binary必须显式强制转换成int类型。
declare @varBi binary(1)
set @varBi=1
select @varBi,cast(@varbi as int)
2, 字符类型不能隐式转换成binary类型,需要显式转换
将字符类型转换成binary类型的过程是:逐个将字符的ASCII码转换成二进制数据ÿ