将HEX转换为BIGINT(或其字符串表示形式)- SQL Server 2019



我正试图将HEX值(ipv6地址,扩展)转换为SQL Server 2019上的BIGINT值。

  • 输入为:2a0085c0000100000000000002410023
  • 期望输出:55830288595252163998698714105846497315

尝试了几乎所有被标记为"工作"的解决方案,例如:

select 
convert(bigint, convert(varbinary, '2a0085c0000100000000000002410023', 2))

,但无济于事。该输出中前面的查询结果:37814307

任何帮助将非常感激!

bigint太小(64位),不适合IPv6地址(128位)。

你可以得到这样的两半:

SELECT
high = CAST(SUBSTRING(ipv6Val, 1, 8) AS bigint),
low = CAST(SUBSTRING(ipv6Val, 9, 8) AS bigint)
这个<<p> strong>假定varbinary/binary值实际上是16字节的确切长度。

基于注释编辑

IPv6通常表示为hexnotdecimal,这将得到文本:
SELECT CONVERT(varchar(32), ipv6Val, 2)

在T-SQL中转换为十进制是非常困难的,就像在大多数语言中一样,我想问你为什么需要它,因为IPv6从来没有这样使用过。

最新更新