我有以下整数值:
50326518
现在我想将其转换为反向但我希望输出如下:
18653250
我使用reverse()
函数,但它返回81562305,但我想要输出18653250
我该怎么做?
有时值可以像F4180000
答案 0 :(得分:3)
免责声明:我希望以下内容适用于您的2008版本。我不确定对给定hexstring的convert()
样式的支持。我在2014年。如果它不起作用,我会删除或编辑答案,请相应评论。
由于它是十六进制字符串,并且您希望实际反转字节顺序,因此可以convert()
将其varbinary
添加到reverse()
并使用convert()
。这将以字节为单位反转它。 varchar
最后回到SELECT convert(varchar(max), convert(varbinary(max), reverse(convert(varbinary(max), '50326518', 2))), 2)
。
18653250
打印:
convert()
注意,出于某种原因,我必须再次明确reverse()
varchar
的返回值,否则会发生一些隐式转换为binary
。所以这是故意的。
也许还考虑将数据存储为int
或可能aysnc:false
。否则很难执行合理的数据(我可以在字符串中插入各种有趣的东西,根本不是十六进制。)
答案 1 :(得分:1)
我会这样做:
select (right(col, 2) + substring(col, 5, 2) + substring(col, 3, 2) + left(col, 2)) as byte_reversed