Utilizamos sub-redes para geolocalização de ativos de computador. Nos dados mais atualizados, não temos sub-redes, como a IE 10.81.66.0, apenas o endereço IP e a máscara de sub-rede, como 255.255.255.0.
Existe uma maneira de usar SQL para pegar uma coluna de endereços IP como 10.81.66.99, juntamente com a máscara de sub-rede 255.255.255.0, e convertê-los em sub-redes como a 10.81.66.0 acima? Sei que isso é muito mais fácil com uma máscara de 24 bits, mas preciso que funcione para qualquer máscara de sub-rede.
Não tenho certeza se você gostaria de converter o VARCHAR
endereço IP em um mapa binário de 1s e 0s para fazer a comparação bit a bit entre o endereço IP e a máscara de sub-rede, mantendo os 1s em comum e, em seguida, convertê-los de volta de alguma forma. Qualquer ajuda seria muito apreciada, pois isso me dá dor de cabeça toda vez que tento perder tempo tentando descobrir.
Versão do SQL: Microsoft SQL Server 2019 (KB5021124) - 15.0.4280.7 (X64) 23 de janeiro de 2023 12:37:13
Consulta base:
SELECIONE Nome do Computador, IP, Máscara de Sub-Rede DE Origem IP
Saída de exemplo:
Computador99, 10.81.66.99, 255.255.255.0
Exemplo de saída desejada:
Computador99, 10.81.66.99, 255.255.255.0, 10.81.66.0