【问题标题】:How to convert Oracle TO_NUMBER to SQL Server如何将 Oracle TO_NUMBER 转换为 SQL Server
【发布时间】:2022-01-13 11:51:51
【问题描述】:

我正在将一些 SQL 脚本从 Oracle 迁移到 SQL Server,并且在尝试将 Oracle TO_NUMBER 转换为 T-SQL 代码时遇到了问题。在网上浏览了一段时间,但从未找到答案,但他们都说使用CASTCONVERTVARBINARY 转换十六进制。

下面是我遇到的问题的一个示例。

在甲骨文中:

select
    to_number( '000000000000000000001111', 'XXXXXXXXXXXXXXXXXXXXXXXX' )
from
    dual

返回 4369

尝试使用 T-SQL 时CONVERT:

select
    CONVERT(VARBINARY, '000000000000000000001111')

返回 0x303030303030303030303030303030303030303031313131

select
    CONVERT(INT, CONVERT(VARBINARY, '000000000000000000001111'))

返回 825307441

任何帮助将不胜感激。

谢谢

【问题讨论】:

    标签: sql-server oracle


    【解决方案1】:

    这应该可以完成工作。

    select convert(bigint, convert(Varbinary(MAX), '000000000000000000001111',2))
    

    【讨论】:

      【解决方案2】:

      TSQL 有二进制字面量,所以你可以这样写:

      select  CONVERT(INT, 0x000000000000000000001111)
      

      输出

      4369
      

      如果您以十六进制字符串开头,则可以将 convert 与 1 或 2 的 binary style 一起使用,所以

       select convert(int, convert(varbinary(1024),'000000000000000000001111', 2))
      

      输出

      4369
      

      【讨论】:

      • 因为我必须接电话而打败我!
      • 太棒了,谢谢你的工作。
      猜你喜欢
      • 1970-01-01
      • 2019-03-01
      • 1970-01-01
      • 2017-02-09
      • 1970-01-01
      • 2022-01-12
      • 2021-06-14
      • 2018-04-15
      • 2012-11-04
      相关资源
      最近更新 更多