sql-server - 如何将 Oracle TO_NUMBER 转换为 SQL Server

标签 sql-server oracle

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

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

在 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/

相关文章:

c# - 分页大型数据集 - SQL Server(最佳实践)

sql - Oracle 将如何处理与具有恒定结果的子查询进行比较的 where 子句条件?

oracle - Oracle 中计算密集型函数的最快语言

sql - 在 Oracle 中,使用 1=1 启动 SQL 查询的 WHERE 子句有用吗?

c# - 使用 DataTable.Load() 而不创建所有列属性

sql-server - 使用 CASE WHEN ... IS NOT NULL 与 ISNULL/COALESCE 的效率

c# - PLSQL Oracle Command不允许在同一个命令中出现多个异常

oracle - 将参数附加到表名会删除点运算符

python - 尝试使用 django-pyodbc-azure 连接到 MSSQL 导致找不到文件错误

sql - XML解析奇怪错误: line 1,字符2038,非法xml字符