我如何在 SQL Server 2008 中反转 integer/non-integer 值

How can i reverse integer/non-integer value in SQL Server 2008

我有以下整数值:

50326518

现在我想将它转换成反向但我想要输出像:

18653250

我使用了 reverse() 函数,但它 returns 81562305,但我想要像 18653250

这样的输出

我该怎么做?

有时值可以像这样F4180000

免责声明:我希望以下内容适用于您的 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() 的 return 值,否则似乎会发生某些隐式转换为 varchar 的情况。所以这是故意的。

也许还可以考虑将数据存储为 binaryint。否则很难执行合理的数据(我可以在字符串中插入各种有趣的东西,根本不是十六进制。)

我会简单地做:

select (right(col, 2) + substring(col, 5, 2) + substring(col, 3, 2) + left(col, 2)) as byte_reversed