Сначала думал использовать функции вида INET_ATON (или их аналоги в php) и, соответственно, хранить ip как число, но возник вопрос: а как тогда производить поиск? Например, вводим "150.72", то хотелось бы найти "150.72.11.22", "150.72.150.89" и т.п.
Хранить как char и использовать like?
SELECT INET_ATON('150.72.11.22'); -> 2521303830
SELECT INET_NTOA(2521303830); -> 150.72.11.22
-- select IP range
SELECT
INET_NTOA(ip)
FROM
tableName
WHERE
ip BETWEEN INET_ATON('150.72.0.0') AND INET_ATON('150.72.255.255');