【发布时间】:2021-03-17 09:41:51
【问题描述】:
请解释原因 选择转换(int,'1')= 1 但 选择转换(整数, 转换(varbinary(MAX),'1')) = 49
【问题讨论】:
标签: sql type-conversion
请解释原因 选择转换(int,'1')= 1 但 选择转换(整数, 转换(varbinary(MAX),'1')) = 49
【问题讨论】:
标签: sql type-conversion
在未定义样式参数的情况下转换为 varbinary 会将输入字符串中的每个 ASCII 字符转换为二进制字节。这就是为什么输入字符串 '1' 首先被映射到 ASCII 码 49,然后外部转换返回整数值 49。
【讨论】:
因为convert(varbinary(MAX),'1') 是二进制 0x31,即整数 49。
【讨论】:
通过使用varbinary,您实际上是将“1”的ascii 表示转换为表示它的实际二进制数字。
使用select ascii('1') 会得到相同的结果。
以同样的方式选择 convert(varbinary(1),'A') = 0x41 其中base 10 是 65,这是 A 的 ascii 值
【讨论】: