我正在将一些 SQL 脚本从 Oracle 迁移到 SQL Server,并在尝试将 Oracle TO_NUMBER
转换为 T-SQL 代码时遇到问题。在网上查了一段时间但从未找到答案,但他们都说使用 CAST
或 CONVERT
与 VARBINARY
转换十六进制。
下面是我遇到的问题的示例。
在 Oracle 中:
select
to_number( '000000000000000000001111', 'XXXXXXXXXXXXXXXXXXXXXXXX' )
from
dual
返回 4369
尝试使用 T-SQL CONVERT
时:
select
CONVERT(VARBINARY, '000000000000000000001111')
返回0x303030303030303030303030303030303030303031313131
和
select
CONVERT(INT, CONVERT(VARBINARY, '000000000000000000001111'))
返回825307441
任何帮助将不胜感激。
谢谢
最佳答案
TSQL 具有二进制文字,因此您可以这样编写:
select CONVERT(INT, 0x000000000000000000001111)
输出
4369
如果您从十六进制字符串开始,则可以使用带有 binary style 的转换。 1 或 2,所以
select convert(int, convert(varbinary(1024),'000000000000000000001111', 2))
输出
4369
关于sql-server - 如何将 Oracle TO_NUMBER 转换为 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70276530/