私のSQL-ServerデータベースはIPネットマスクをバイナリとして保存します。これらを特定のIPと一致させる方法が必要です
たとえば192.168.21.5
、DBに保存されているネットマスクの一部ですか?
のバイナリ表現192.168.21.5
:
11000000.10101000.00010101.00000101 (without the dots)
DBに格納されているネットマスクは、binary(4)とtinyintフィールドです。
11000000.10101000.00010101.00000000 / 24
(これは:)192.168.21.0 /24
したがって、の最初の24ビットは192.168.21.5
データベース内のレコードと一致する必要があります。
n
バイナリフィールドの最初のビットのみをチェックするにはどうすればよいですか(と同様LEFT(text, 24)
)?
これを行うための賢い方法はありますか?おそらくビット単位でAND
ですか?