我有一个从二进制文件中获取的数据,该文件已被编码为类型为varchar(4)的SQL列。这是不能改变的。用于创建此varchar的4个字节有时需要解释为高字节( int )值。如果我们能完全在SQL中完成这项工作,那就太好了。
打印此varchar(4)列中的值没有任何帮助,因为大多数字节都被解释为无法打印的控制字符。
我不明白CAST或CONVERT能提供什么帮助,因为它们似乎是为将"0054“这样的varchar转换成int54而量身定做的。相反,我需要将底层的位解释为int (大端),而不是将varchar字符解释为int。
例如,有一条记录将此列打印为无可见字符,但STRING_ESCAPE(@value,'json')将显示\u0000\u0000\u0000\u0007
这需要以某种方式解释为int 7
下面是一些关于STRING_ESCAPE返回的内容以及int值应该是什么的示例:
\u0000\u0000\u0000\b ==> 8
\u0000\u0000\u0000\t ==> 9
\u0000\u0000\u0000\n ==> 10
\u0000\u0000\u0000\u000b ==> 11
\u0000\u0000\u0000\f ==> 12
\u0000\u0000\u0000\r ==> 13
\u0000\u0000\u0000\u000e ==> 14
\u0000\u0000\u0000\u000f ==> 15
\u0000\u0000\u0000\u0010 ==> 16感谢你的智慧!
发布于 2021-06-10 06:07:46
CAST(CAST(@value as BINARY(4)) as INT)我遗漏的部分是指定二进制的大小为4。如果没有大小,它总是强制转换为0!
https://stackoverflow.com/questions/67911522
复制相似问题