You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL中将16位十进制值转换为ASCII字符?

解决SQL中16位十进制值转ASCII字符的问题

针对你遇到的16位十进制值转ASCII字符时出现多余前导0的问题,提供几种直接的解决方法:

方法1:指定VarBinary长度为2

因为1-2个ASCII字符对应2字节(16位),直接将十进制值转为VARBINARY(2),就能自动截断高位的填充0,再转VARCHAR即可得到目标字符:

SELECT CONVERT(VARCHAR(MAX), CONVERT(VARBINARY(2), 16705))

执行后会直接返回AA。

方法2:位运算保留低16位

通过位与运算& 0xFFFF保留数值的低16位,过滤掉高位的无效0,再进行转换:

SELECT CONVERT(VARCHAR(MAX), CONVERT(VARBINARY(MAX), 16705 & 0xFFFF))

这种方法适合不确定数值是否存在高位冗余的场景,确保只处理16位有效数据。

方法3:截取十六进制有效位

先将十进制转为十六进制字符串,截取后4位(对应2字节),再转回二进制后转字符:

SELECT CONVERT(VARCHAR(MAX), CONVERT(VARBINARY(MAX), RIGHT('0000' + CONVERT(VARCHAR(8), 16705, 2), 4), 2))

此方法通过字符串处理精准提取有效部分,兼容性较好。

内容的提问来源于stack exchange,提问作者PenMonk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 15:22:03