‘Transactions.ip’ уже является целым числом, поэтому спрашивающий использует INT_ATON. Бесполезно пытаться сопоставить его напрямую со строкой, такой как / regexp, сначала вам придется преобразовать ее обратно в адрес IPv4, используя обратную функцию INT_NTOA:
SELECT * FROM transactions WHERE INT_NTOA(ip) LIKE '127.%';
Для конвертации и сравнения требуется полное сканирование таблицы (уничтожение индексов).
Мне нужна возможность выполнять регулярное выражение для всех ip с определенным первым октетом (т. Е. 127)
Однако, если вы хотите сравнить с передней частью IP-адреса, вы можете воспользоваться тем, что первый октет хранится в старших значащих битах числа, и сказать:
SELECT * FROM transactions WHERE ip BETWEEN INT_NTOA('127.0.0.0') AND INT_NTOA('127.255.255.255');
Что можно сделать с помощью индекса на «ip», что может быть значительно более эффективным.