如何将存储在table中的IP地址转换为十六进制?对于 IP 141.105.223.182,我期望的输出是 00:00:8D:69:DF:B6
How to convert IP address stored in a table into hexadecimal? the output I am expecting is 00:00:8D:69:DF:B6 for an IP 141.105.223.182
我用它来转换 IP 地址,(我是从网上读到的,而不是我的 SQL)。我现在想了解如何将列中存储的 IP 地址转换为十六进制。
DECLARE @IP varchar(30)
SET @IP = '192.168.1.1'
SELECT
'00:00:'+
RIGHT(CONVERT(varchar(max), CONVERT(VARBINARY(4), CAST(PARSENAME(@IP, 4) AS int)), 2),2) + ':'
+
RIGHT(CONVERT(varchar(max), CONVERT(VARBINARY(4), CAST(PARSENAME(@IP, 3) AS int)), 2),2) + ':'
+
RIGHT(CONVERT(varchar(max), CONVERT(VARBINARY(4), CAST(PARSENAME(@IP, 2) AS int)), 2),2) + ':'
+
RIGHT(CONVERT(varchar(max), CONVERT(VARBINARY(4), CAST(PARSENAME(@IP, 1) AS int)), 2),2)
你快到了!
如果我对你的要求理解正确,你想用table的列数据替换@IP
您只需添加一个来源并更改 selection 标准
我创建了一个临时 table #testdata 来演示,你只需要 select 从你的 table
create table #testdata
([IP] varchar(25))
insert into #testdata
values
('192.168.1.1')
insert into #testdata
values
('192.168.1.2')
insert into #testdata
values
('192.168.1.3')
SELECT
'00:00:'+
RIGHT(CONVERT(varchar(max), CONVERT(VARBINARY(4), CAST(PARSENAME([IP], 4) AS int)), 2),2) + ':'
+ RIGHT(CONVERT(varchar(max), CONVERT(VARBINARY(4), CAST(PARSENAME([IP], 3) AS int)), 2),2) + ':'
+ RIGHT(CONVERT(varchar(max), CONVERT(VARBINARY(4), CAST(PARSENAME([IP], 2) AS int)), 2),2) + ':'
+ RIGHT(CONVERT(varchar(max), CONVERT(VARBINARY(4), CAST(PARSENAME([IP], 1) AS int)), 2),2)
FROM #testdata
我用它来转换 IP 地址,(我是从网上读到的,而不是我的 SQL)。我现在想了解如何将列中存储的 IP 地址转换为十六进制。
DECLARE @IP varchar(30)
SET @IP = '192.168.1.1'
SELECT
'00:00:'+
RIGHT(CONVERT(varchar(max), CONVERT(VARBINARY(4), CAST(PARSENAME(@IP, 4) AS int)), 2),2) + ':'
+
RIGHT(CONVERT(varchar(max), CONVERT(VARBINARY(4), CAST(PARSENAME(@IP, 3) AS int)), 2),2) + ':'
+
RIGHT(CONVERT(varchar(max), CONVERT(VARBINARY(4), CAST(PARSENAME(@IP, 2) AS int)), 2),2) + ':'
+
RIGHT(CONVERT(varchar(max), CONVERT(VARBINARY(4), CAST(PARSENAME(@IP, 1) AS int)), 2),2)
你快到了!
如果我对你的要求理解正确,你想用table的列数据替换@IP
您只需添加一个来源并更改 selection 标准
我创建了一个临时 table #testdata 来演示,你只需要 select 从你的 table
create table #testdata
([IP] varchar(25))
insert into #testdata
values
('192.168.1.1')
insert into #testdata
values
('192.168.1.2')
insert into #testdata
values
('192.168.1.3')
SELECT
'00:00:'+
RIGHT(CONVERT(varchar(max), CONVERT(VARBINARY(4), CAST(PARSENAME([IP], 4) AS int)), 2),2) + ':'
+ RIGHT(CONVERT(varchar(max), CONVERT(VARBINARY(4), CAST(PARSENAME([IP], 3) AS int)), 2),2) + ':'
+ RIGHT(CONVERT(varchar(max), CONVERT(VARBINARY(4), CAST(PARSENAME([IP], 2) AS int)), 2),2) + ':'
+ RIGHT(CONVERT(varchar(max), CONVERT(VARBINARY(4), CAST(PARSENAME([IP], 1) AS int)), 2),2)
FROM #testdata