Самый быстрый и простой способ сделать это - заставить СУБД как-то это сделать.
Вы можете узнать, каков размер целого числа в PHP, проверив значение предопределенной константы PHP_INT_SIZE
.Это будет 4, если работает в 32-битной системе, 8, если работает в 64-битной системе.
Я предлагаю заполнить переменную, например,
$smallIntegers = intval(PHP_INT_SIZE == 4);
, а затемв вашем запросе используйте что-то вроде этого:
SELECT
...,
CASE
WHEN :smallIntegers: = 1 AND IPAddress > 2147483647 THEN IPAddress - 4294967296
ELSE IPAddress
END AS IPAddress,
...
...