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?
IF you store a binary(4)
in a binary(16)
column you'll get back, when you read it, a padded value of length 16. If you want to have dynamic length you must use a varbinary(16)
. This type retains the length of the data inserted, at the cost of adding extra 2 bytes on-disk (the actual length).