繁体   English   中英

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

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

我有以下整数值:

50326518

现在我想将其转换为反向,但是我想要的输出是:

18653250

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

我怎样才能做到这一点?

有时值可能像这样F4180000

免责声明:希望以下内容适用于您的2008版本。 我不确定给定十六进制对convert()样式的支持。 我在2014年。如果无法使用,我将删除或编辑答案,请据此发表评论。

由于它是一个十六进制字符串,并且您实际上想反转字节顺序,因此可以convert()convert()为一个varbinary并在其上使用reverse() 这将逐字节反转它。 convert()返回varchar

SELECT convert(varchar(max), convert(varbinary(max), reverse(convert(varbinary(max), '50326518', 2))), 2)

印刷品:

18653250

注意,由于某种原因,我不得不再次显式convert()返回reverse()的返回值,否则似乎会发生一些隐式转换为varchar情况。 所以这是故意的。

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

我只会做:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM