【问题标题】:Convert varchar(32) to bigint将 varchar(32) 转换为 bigint
【发布时间】:2012-04-11 20:34:25
【问题描述】:

是否可以在 sql server 中将 varchar(32)(十六进制字符串,如 0x81f2cf442269e111b99c1cc1deedf59c)转换为 bigint?

我试过了:

select convert(bigint, convert (varbinary(16), '0x81f2cf442269e111b99c1cc1deedf59c', 1))

但我不确定它是否适用于更高和更低的值。

【问题讨论】:

  • 你为什么需要这样的东西?
  • 将此字符串存储在 bigint 列中
  • 我认为这些帖子可能对您有所帮助 blog.sqlauthority.com/2010/02/01/…dpatrickcaldwell.blogspot.com/2009/05/…
  • 技术上不可能。一个 32 十六进制字符串是一个 16 字节的数字。 Bigint 只包含 8 个 b 字节 - 你不能在 8 个字节中容纳 16 个字节。
  • 感谢您的回答,我不确定

标签: sql-server hex type-conversion bigint


【解决方案1】:

我希望你可以通过以下方式,请你试试这个。

DECLARE @HexValue Varchar(32)
SET @HexValue = '0x81f2cf442269e111b99c1cc1deedf59c'

Declare @Query NVARCHAR(100)
Declare @Parameters NVARCHAR(50)
Declare @ReturnValue BIGINT

SET @Query = N'Select @Result = Convert(BIGINT,' + @HexValue + ')'
SET @Parameters = N'@Result BIGINT output'
EXEC MASTER.dbo.Sp_executesql @Query, @Parameters, @ReturnValue OUTPUT

SELECT @ReturnValue

感谢您的宝贵时间。

【讨论】:

    【解决方案2】:

    可以将 varchar(32)(十六进制字符串,如 0x81f2cf442269e111b99c1cc1deedf59c) 到 sql server 中的 bigint ?

    2 个例子回答。两者都完全错误。

    无法完成。有人关心先运行基本的数学检查吗?

    32 十六进制 = 16 个字节。 Biging:8 个字节。

    你所有的代码都是一回事——没用。您不能将具有 16 字节数字的 32 十六进制字符串转换为 8 字节数字。仅在极少数情况下(高 8 字节全为 0)。

    【讨论】:

      猜你喜欢
      • 2021-05-22
      • 2015-11-10
      • 2013-03-21
      • 1970-01-01
      • 1970-01-01
      • 2018-02-10
      • 2014-08-11
      • 2017-01-20
      • 1970-01-01
      相关资源
      最近更新 更多