c语言0x00如何不截断_binary 和 varbinary 用法全解

本文详细介绍了SQL Server中binary和varbinary数据类型的用法,包括存储、转换、填充规则以及与不同类型之间的转换。内容涵盖二进制数据的存储、转换规则、类型转换、字符串翻译和比较等,提供了丰富的示例来帮助理解。
摘要由CSDN通过智能技术生成

在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码转换成二进制数据ÿ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值