2009-07-07 11 views
0

私はIPアドレス列を含むMS SQLServer 2005テーブルを持っており、サブネットごとにエントリを数えたいと思います。サブネット別クエリipaddress

のような不幸なIPアドレスの列は、サンプルデータを持つvarchar型である:私は最善のアプローチは、整数にIPアドレスを変換することになり、その後、私は適切に適用することができると思い 192.168.10.20 10.1.2.3

ビットマスク。

整数に4オクテットの文字列を取得する方法はありますか?

答えて

0

また、表示hereのようにPARSENAME関数を使用してこれを行うこともできます。

1

4オクテットのドット表記をBIGINTに変換するには、次のようにします。 = '192.168.123.123'

セレクト(CONVERT(BIGINT、PARSENAME(IP @、1))+ CONVERT(BIGINT、PARSENAME(IP @、2 IP @

DECLAREの@IPのCHAR(15)SET ))* 256 + CONVERT(BIGINT、PARSENAME(IP @、3))* 65536 + CONVERT(BIGINT、PARSENAME(@ IP、4))* 16777216)

そこから、それはに非常に単純なことだし、 4294967040(255.255.255.0)を取得して/ 24サブネットにする

コードのためにLess Than Dotありがとうございます。

関連する問題