IPアドレスの分解 SQLserverでセグメントの比較をする場合

IPアドレスの分解 SQLserverでセグメントの比較をする場合

この記事を読むのに必要な時間は約 10 分です。

意外と難しいセグメント単位の分割

分解

久しぶりの上級テクニックです!!

SQLサーバーでは取り込まれたテーブルの情報にIPアドレスが存在したとして、セグメント毎に分解を行うのは容易ではありません。

しかし、目的外利用ですがIPアドレスの分解を簡単に行う関数が存在します。

IPアドレスの分解ができれば、あとはセグメント単位に考えるのは容易ですよね

SQL文

こんなデータがあったとして・・・・

SELECT [No]
      ,[IP]

  FROM [test001].[dbo].[ip]

 

こんな感じで書きます!

SELECT [No]
,[IP]
,PARSENAME(ip,4) as 'seg1'
,PARSENAME(ip,3) as 'seg2'
,PARSENAME(ip,2) as 'seg3'
,PARSENAME(ip,1) as 'seg4'

FROM [test001].[dbo].[ip]

ここまで出来たら、あとは料理するのは簡単ですよね♪

サンプル

以下、データサンプルです。

No IP seg1 seg2 seg3 seg4
1 192.168.1.10 192 168 1 10
2 192.168.1.11 192 168 1 11
3 192.168.1.12 192 168 1 12
4 192.168.1.13 192 168 1 13
5 192.168.1.14 192 168 1 14
6 192.168.1.15 192 168 1 15
7 192.168.1.16 192 168 1 16
8 192.168.1.17 192 168 1 17
9 192.168.1.18 192 168 1 18
10 192.168.1.19 192 168 1 19
11 192.168.1.20 192 168 1 20
12 192.168.1.21 192 168 1 21
13 192.168.1.22 192 168 1 22
14 192.168.1.23 192 168 1 23
15 192.168.1.24 192 168 1 24
16 192.168.1.25 192 168 1 25
17 192.168.1.26 192 168 1 26
18 192.168.1.27 192 168 1 27
19 192.168.1.28 192 168 1 28
20 192.168.1.29 192 168 1 29
21 192.168.1.30 192 168 1 30
22 192.168.1.31 192 168 1 31
23 192.168.1.32 192 168 1 32
24 20.13.5.4 20 13 5 4
25 20.13.5.5 20 13 5 5
26 20.13.5.6 20 13 5 6
27 20.13.5.7 20 13 5 7
28 20.13.5.8 20 13 5 8
29 20.13.5.9 20 13 5 9
30 20.13.5.10 20 13 5 10
31 20.13.5.11 20 13 5 11
32 20.13.5.12 20 13 5 12
33 20.13.5.13 20 13 5 13
34 20.13.5.14 20 13 5 14
35 20.13.5.15 20 13 5 15
36 20.13.5.16 20 13 5 16
37 20.13.5.17 20 13 5 17
38 183.2.3.1 183 2 3 1
39 183.2.3.2 183 2 3 2
40 183.2.3.3 183 2 3 3
41 183.2.3.4 183 2 3 4
42 183.2.3.5 183 2 3 5
43 183.2.3.6 183 2 3 6
44 183.2.3.7 183 2 3 7
45 183.2.3.8 183 2 3 8
46 183.2.3.9 183 2 3 9
47 183.2.3.10 183 2 3 10
48 183.2.3.11 183 2 3 11
49 30.30.2.6 30 30 2 6
50 30.30.2.7 30 30 2 7
51 30.30.2.8 30 30 2 8
52 30.30.2.9 30 30 2 9
53 30.30.2.10 30 30 2 10
54 30.30.2.11 30 30 2 11
55 30.30.2.12 30 30 2 12
56 30.30.2.13 30 30 2 13
57 30.30.2.14 30 30 2 14
58 30.30.2.15 30 30 2 15
59 30.30.2.16 30 30 2 16
60 30.30.2.17 30 30 2 17
61 30.30.2.18 30 30 2 18
62 30.30.2.19 30 30 2 19
63 30.30.2.20 30 30 2 20
64 30.30.2.21 30 30 2 21
65 30.30.2.22 30 30 2 22
66 30.30.2.23 30 30 2 23
67 30.30.2.24 30 30 2 24
68 56.45.8.98 56 45 8 98
69 56.45.8.99 56 45 8 99
70 56.45.8.100 56 45 8 100
71 56.45.8.101 56 45 8 101
72 56.45.8.102 56 45 8 102
73 56.45.8.103 56 45 8 103
74 56.45.8.104 56 45 8 104
75 56.45.8.105 56 45 8 105
76 56.45.8.106 56 45 8 106
77 56.45.8.107 56 45 8 107
78 56.45.8.108 56 45 8 108
79 56.45.8.109 56 45 8 109
80 56.45.8.110 56 45 8 110
81 56.45.8.111 56 45 8 111
82 56.45.8.112 56 45 8 112
83 56.45.8.113 56 45 8 113
84 56.45.8.114 56 45 8 114
85 56.45.8.115 56 45 8 115
86 56.45.8.116 56 45 8 116
87 56.45.8.117 56 45 8 117
88 56.45.8.118 56 45 8 118
89 56.45.8.119 56 45 8 119
タイトルとURLをコピーしました