我試圖將IP地址從數字(例如4183726815)轉換爲MS SQL Server中的實際傳統IP顯示(例如192.168.1.230)。將IP的數字轉換爲傳統IP顯示
我發現了其他代碼(下面),但是然後我得到一個錯誤。
CREATE FUNCTION dbo.IntegerToIPAddress (@IP AS bigint)
RETURNS varchar(15)
AS
BEGIN
DECLARE @Octet1 tinyint
DECLARE @Octet2 tinyint
DECLARE @Octet3 tinyint
DECLARE @Octet4 tinyint
DECLARE @RestOfIP bigint
SET @Octet1 = @IP/16777216
SET @RestOfIP = @IP - (@Octet1 * 16777216)
SET @Octet2 = @RestOfIP/65536
SET @RestOfIP = @RestOfIP - (@Octet2 * 65536)
SET @Octet3 = @RestOfIP/256
SET @Octet4 = @RestOfIP - (@Octet3 * 256)
RETURN(CONVERT(varchar, @Octet1) + '.' +
CONVERT(varchar, @Octet2) + '.' +
CONVERT(varchar, @Octet3) + '.' +
CONVERT(varchar, @Octet4))
END
當我運行
SELECT dbo.IntegerToIPAddress(2130806436)
它返回127.1.134.164。這正是需要的。
然而,當我運行數據IP的,我得到以下錯誤: 如
SELECT dbo.IntegerToIPAddress2(3232235780)
Arithmetic overflow error converting expression to data type int.
任何想法?或者我應該從上面的代碼嘗試另一種方法嗎?
謝謝大家! :)
你好Deepshikha,這是訣竅!非常感謝你的幫助! :) – Fred