您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

将存储为VARCHAR的BINARY转换为BINARY

将存储为VARCHAR的BINARY转换为BINARY

您得到的结果是因为字符串“0003f80075177fe6”(一个VARCHAR值)被转换为代码点,并且这些代码点被用作二进制值。由于您可能正在使用与ASCII兼容的归类,因此,您将获得ASCII码点:048(30十六进制),f102(66十六进制),依此类推。这解释了30 30 30 33 66 38 30 30...

要做的是将字符串解析为字节(00 03 f8 00 75 71 77 fe 66)的十六进制表示形式。CONVERT接受一个额外的“样式”参数,该参数允许您转换十六进制字符串:

SELECT CONVERT(BINARY(16), '0003f80075177fe6', 2)

样式2将十六进制字符串转换为二进制。(样式1对于以“ 0x”开头的字符串的作用相同,在此情况并非如此。)

请注意,如果少于16个字节(在这种情况下),则该值将用零(0x0003F80075177FE60000000000000000)右填充。如果您需要将其左侧填充,则必须自己执行以下操作:

SELECT CONVERT(BINARY(16), RIGHT(REPLICATE('00', 16) + '0003f80075177fe6', 32), 2)

最后,请注意,只需不加转换就可以指定二进制文字,只需在其前面加上“ 0x”并且不使用引号即可:SELECT 0x0003f80075177fe6它将返回type列BINARY(8)。与该查询无关,只是为了完整性。

其他 2022/1/1 18:47:21 有475人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶