【问题标题】:SQL convert unexpected resultSQL 转换意外结果
【发布时间】:2021-03-17 09:41:51
【问题描述】:

请解释原因 选择转换(int,'1')= 1 但 选择转换(整数, 转换(varbinary(MAX),'1')) = 49

【问题讨论】:

    标签: sql type-conversion


    【解决方案1】:

    在未定义样式参数的情况下转换为 varbinary 会将输入字符串中的每个 ASCII 字符转换为二进制字节。这就是为什么输入字符串 '1' 首先被映射到 ASCII 码 49,然后外部转换返回整数值 49。

    【讨论】:

      【解决方案2】:

      因为convert(varbinary(MAX),'1') 是二进制 0x31,即整数 49。

      【讨论】:

        【解决方案3】:

        通过使用varbinary,您实际上是将“1”的ascii 表示转换为表示它的实际二进制数字。

        使用select ascii('1') 会得到相同的结果。

        以同样的方式选择 convert(varbinary(1),'A') = 0x41 其中base 10 是 65,这是 A 的 ascii 值

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-10-01
          • 1970-01-01
          • 2015-12-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-14
          相关资源
          最近更新 更多