我的 SQL-Server 数据库将 IP 网络掩码存储为二进制文件。我需要一种将这些与给定 IP 匹配的方法
例如,192.168.21.5
是存储在数据库中的网络掩码的一部分吗?
的二进制表示192.168.21.5
:
11000000.10101000.00010101.00000101 (without the dots)
存储在数据库中的网络掩码是:binary(4) 和一个 tinyint 字段:
11000000.10101000.00010101.00000000 / 24
(这将是:)192.168.21.0 /24
所以,前 24 位192.168.21.5
必须匹配数据库中的记录。
我如何只检查n
二进制字段的第一位(类似于LEFT(text, 24)
)?
有什么聪明的方法可以做到这一点,也许是按位AND
?