将十六进制(当前 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
我们如何将 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