How to store both IPv4 or IPv6 in single column in SQL Server?

Should I use binary(16) or varbinary(16)?

I know I can use getAddress() in java.net.InetAddress (Java) or System.Net.IPAddress (C#) to get a byte[] representation of both IPv4 and IPv6, but if I need to insert IPv4 i.e. binary(4) into a binary(16) field in SQL Server, do I need to worry about padding or anything?

12
задан gotqn 31 March 2015 в 13:24
поделиться

2 ответа

ЕСЛИ вы сохраните двоичный(4) в столбце двоичный(16), вы получите обратно, когда вы его прочитаете, заполненный значение длины 16. Если вы хотите иметь динамическую длину, вы должны использовать varbinary(16). Этот тип сохраняет длину вставленных данных за счет добавления дополнительных 2 байтов на диск (фактическая длина).

16
ответ дан 2 December 2019 в 06:44
поделиться

Используйте встраивание адресов v4-in-v6 для преобразования адресов ipv4 в формат ipv6; тогда вы можете относиться ко всем одинаково.

7
ответ дан 2 December 2019 в 06:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: