按长度过滤 varbinary 字段

filter varbinary field by length

我正在使用 VARBINARY(16) 数据类型存储 ips。我只想 select ipv4 ips。是否可以按 VARBINARY(或 VARCHAR)中使用的长度过滤列?像这样

SELECT INET6_NTOA(`ip`) from `TABLE` where BYTESLENGHT(`ip`) = 4

我会使用 LENGTH(),其中 returns 字符串的长度(以字节为单位)。它同时支持 VARCHAR 或 VARBINARY。

mysql> create table mytable (ip varbinary(16));

mysql> insert into mytable set ip = inet6_aton('192.168.1.1');

mysql> insert into mytable set ip = inet6_aton('fdfe::5a55:caff:fefa:9089');

mysql> select length(ip) from mytable;
+------------+
| length(ip) |
+------------+
|          4 |
|         16 |
+------------+