欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
yilin 的程式日記: [SQL] IP 轉 Number, 與 Number 轉 IP...
分析使用者的 IP 是來(lái)自哪個(gè)國家/城市, 在觀(guān)察網(wǎng)路行為上是很重要的一項數據.
有興趣的人可以到這裡找尋一些 IP 與地理資訊的相關(guān)資源.
至於 IP 轉換成數字的公式, 可以在 IP address 的 wiki 找到.
以 wiki 中所舉的 172.16.254.1 來(lái)說(shuō):
  1. 將 172 * 16777216 得到 一個(gè) w 值 ( 2^24 = 16777216 )
  2. 將 16 * 65536 得到 一個(gè) x 值 ( 2^16 = 65536 )
  3. 將 254 * 256 得到 一個(gè) y 值 ( 2^8 = 256 )
  4. 將 1 * 1 得到一個(gè) z 值 ( 2^0 = 1 )
  5. 最後透過(guò) w + x + y + z 可得到此 IP 所代表的數字 2886794753
反之, 將 2886794753 轉換為 IP 字串的方式如下:
  1. 將 2886794753 / 16777216 得到 172
  2. 將 (2886794753 % 16777216) / 65536 得到 16
  3. 將 ((2886794753 % 16777216) % 65536) / 256 得到 254
  4. 將 (((2886794753 % 16777216) % 65536)) % 256 得到 1
  5. 最後結果就是 172.16.254.1
因為欲比對的資料是放在資料庫中的,所以將以上的運算轉為兩個(gè)資料庫的 function, 以方便後續查詢(xún).
  1. 將 IP 轉為 Number 的 dbo.getIPNumber():
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE FUNCTION [dbo].[getIPNumber] ( @ip varchar(15) )
    RETURNS bigint 
    AS
    BEGIN
      
        Declare @part1 bigint, @part2 int, @part3 int, @part4 int
        SELECT @part1=CAST(LEFT(@ip, CHARINDEX ('.' , @ip)-1) as bigint)*16777216, @ip=RIGHT(@ip, LEN(@ip)-CHARINDEX ('.' , @ip ))
        SELECT @part2=LEFT(@ip, CHARINDEX ('.' , @ip)-1)*65536, @ip=RIGHT(@ip, LEN(@ip)-CHARINDEX ('.' , @ip ))
        SELECT @part3=LEFT(@ip, CHARINDEX ('.' , @ip)-1)*256, @part4=RIGHT(@ip, LEN(@ip)-CHARINDEX ('.' , @ip ))
        Return @part1+@part2+@part3+@part4
      
    END
  2. 將 Number 轉為 IP 的 dbo.getIPString():
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE FUNCTION [dbo].[getIPString] ( @num bigint )
    RETURNS varchar(15) 
    AS
    BEGIN
      
        DECLARE @ip varchar(15)
        SELECT @ip = @num / 16777216, @num=@num % 16777216
        SELECT @ip = @ip + '.' + cast(@num / 65536 as varchar), @num=@num % 65536
        SELECT @ip = @ip + '.' + cast(@num / 256 as varchar), @ip = @ip + '.' + cast(@num % 256 as varchar)
        Return @ip
      
    END
由於 SQL 的 SELECT 給值是從左至右依序進(jìn)行的, 所以以上兩個(gè)寫(xiě)法都可再精簡(jiǎn)成一個(gè) SELECT 將資料都算完.
精簡(jiǎn)版如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
CREATE FUNCTION [dbo].[getIPNumber] ( @ip varchar(15) )
RETURNS bigint 
AS
BEGIN
  
    Declare @part1 bigint, @part2 int, @part3 int, @part4 int
    SELECT @part1=CAST(LEFT(@ip, CHARINDEX ('.' , @ip)-1) as bigint)*16777216
        , @ip=RIGHT(@ip, LEN(@ip)-CHARINDEX ('.' , @ip ))
        , @part2=LEFT(@ip, CHARINDEX ('.' , @ip)-1)*65536
        , @ip=RIGHT(@ip, LEN(@ip)-CHARINDEX ('.' , @ip ))
        , @part3=LEFT(@ip, CHARINDEX ('.' , @ip)-1)*256
        , @part4=RIGHT(@ip, LEN(@ip)-CHARINDEX ('.' , @ip ))
    Return @part1+@part2+@part3+@part4
  
END
  
CREATE FUNCTION [dbo].[getIPString] ( @num bigint )
RETURNS varchar(15) 
AS
BEGIN
    DECLARE @ip varchar(15)
    SELECT @ip = @num / 16777216
        , @num=@num % 16777216
        , @ip = @ip + '.' + cast(@num / 65536 as varchar)
        , @num=@num % 65536
        , @ip = @ip + '.' + cast(@num / 256 as varchar)
        , @ip = @ip + '.' + cast(@num % 256 as varchar)
    Return @ip
  
END
補充: 在 SQL Server 2005 後, 有一個(gè) ParseName 的函式 (說(shuō)明)
據 MSDN 的說(shuō)明, 此函式是用在傳回物件名稱(chēng)的指定部份. 物件的可擷取部份有物件名稱(chēng)、擁有者名稱(chēng)、資料庫名稱(chēng)和伺服器名稱(chēng).
由於在資料庫中, 物件結構是 [伺服器名稱(chēng)].[資料庫名稱(chēng)].[結構描述名稱(chēng)].[物件名稱(chēng)], 剛好跟 IP 的結構一樣, 所以我們可以改寫(xiě) IP 轉換至 Number 的函式如下.
1
2
3
4
5
6
7
8
9
10
11
CREATE FUNCTION [dbo].[getIPNumber] ( @ip varchar(15) )
RETURNS bigint 
AS
BEGIN
  
  Return CAST(PARSENAME(@ip,4) as bigint)*16777216
   + PARSENAME(@ip,3)*65536
   + PARSENAME(@ip,2)*256
   + PARSENAME(@ip,1)
  
END
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
T-SQL象數組一樣處理字符串、分割字符串
[SQL Server] 提取數字、提取英文、提取中文
根據字符分割字符串的三種寫(xiě)法
將select top 10 * from [dbo].[a_temp02] 的結果集轉化成json
SQL SERVER比較一個(gè)字符串中是否含含另一個(gè)字符串中的一個(gè)字符
直接從SQL語(yǔ)句問(wèn)題貼子數據建表并生成建表語(yǔ)句的存儲過(guò)程
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久