如何在SQL Server 2008中反转整数/非整数值

时间:2018-05-05 17:28:03

标签: sql sql-server sql-server-2008 sql-server-2008-r2

我有以下整数值:

50326518

现在我想将其转换为反向但我希望输出如下:

18653250

我使用reverse()函数,但它返回81562305,但我想要输出18653250

我该怎么做?

有时值可以像F4180000

一样

2 个答案:

答案 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