不是 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
我想得到类似 22000000042100001 的结果,即十进制值 00000016:000001a5:0001
您显示的值溢出 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