将十六进制(当前 LSN)转换为十进制转换器

Convert hex (Current LSN) to decimal converter

我们如何将 SQL 服务器中的日志序列号转换为这样 000000dc:00003146:0002 的十进制值?

不能 100% 确定您的期望(一个示例会很有用),但是下面显示了如何将每个部分转换为十进制并重新连接。如果您分别对每个值感兴趣,请删除 concat_ws

with s as (
    select [Current LSN], Replace([Current LSN],':','.') lsn from sys.fn_dblog(null,null) 
)
select [Current LSN], 
Concat_Ws(':',
    Convert(int,Convert(varbinary,Concat('0x',ParseName(lsn,3)),1)),
    Convert(int,Convert(varbinary,Concat('0x',ParseName(lsn,2)),1)),
    Convert(int,Convert(varbinary,Concat('0x',ParseName(lsn,1)),1))
)
from s

I would like to get a result like 22000000042100001 which is 00000016:000001a5:0001 in decimal value

您显示的值溢出 bigint 但是作为字符串表示您可以稍微调整它:

with s as (
    select Replace('00000016:000001a5:0001',':','.') lsn
)
select 
 Concat (
    Convert(bigint,Convert(varbinary,Concat('0x',ParseName(lsn,3)),1)) * 1000000,
    Convert(int,Convert(varbinary,Concat('0x',ParseName(lsn,2)),1)) * 10000,
    Convert(int,Convert(varbinary,Concat('0x',ParseName(lsn,1)),1))
)
from s

结果:2200000042100001