MySQL функция для конвертирования bigint IP адресов в удобоваримые varchar
Многие хранят IP адреса в формате bigint, например IP2Location. А если проект использует разные технологии для frontend и admin (Java и PHP как в моем случае) интерфейсов то нет необходимости реализовывать функцию в обоих языках, ее можно написать на SQL.
SQL:
-
DELIMITER $$
-
DROP FUNCTION IF EXISTS `dbname`.`ip2str`$$
-
CREATE FUNCTION `dbname`.`ip2str`(ip bigint) RETURNS varchar(15)
-
BEGIN
-
declare var1, var2, var3, var4 bigint;
-
SET var1 = (ip>> 24);
-
SET var2 = (ip & 0x00FF0000)>> 16;
-
SET var3 = (ip & 0x0000FF00)>> 08 ;
-
SET var4 = (ip & 0x000000FF)>> 00;
-
RETURN concat_ws('.', var1, var2, var3, var4);
-
END$$
-
DELIMITER ;
Теперь запрос будет выглядеть примерно так:
SQL:
-
SELECT ipnumber, ip2str(ipnumber)
-
FROM ipnumbers
-
LIMIT 1;
И в ответ получаем:
2130706433, 127.0.0.1
Автор заметки: Art


November 24th, 2007 at 18:46 Quote
Так вроде в mysql есть такая функция:
SELECT INET_NTOA(2130706433);
December 11th, 2007 at 13:58 Quote
zakhar @ 24.11.2007, 18:46 #
незнал, спасибо