This Might Be Useful

MySQL функция для конвертирования bigint IP адресов в удобоваримые varchar

Многие хранят IP адреса в формате bigint, например IP2Location. А если проект использует разные технологии для frontend и admin (Java и PHP как в моем случае) интерфейсов то нет необходимости реализовывать функцию в обоих языках, ее можно написать на SQL.

SQL:
  1. DELIMITER $$
  2. DROP FUNCTION IF EXISTS `dbname`.`ip2str`$$
  3. CREATE FUNCTION `dbname`.`ip2str`(ip bigint) RETURNS varchar(15)
  4. BEGIN
  5. declare var1, var2, var3, var4 bigint;
  6. SET var1 = (ip>> 24);
  7. SET var2 = (ip & 0x00FF0000)>> 16;
  8. SET var3 = (ip & 0x0000FF00)>> 08 ;
  9. SET var4 = (ip & 0x000000FF)>> 00;
  10. RETURN concat_ws('.', var1, var2, var3, var4);
  11. END$$
  12. DELIMITER ;

Теперь запрос будет выглядеть примерно так:

SQL:
  1. SELECT ipnumber, ip2str(ipnumber)
  2. FROM ipnumbers
  3. LIMIT 1;

И в ответ получаем:

2130706433, 127.0.0.1

Автор заметки: Art

· Преобразование даты в unix timestamp и обратно
· Реализация аналога LIMIT из MySQL в MS SQL
· Восстановление удаленных записей в mySQL из binlog
· Простое создание DVD-рипов в Linux
· Сборка MySQL, Apache и PHP со всеми необходимыми расширениями

- Коментировать
- Trackback

2 Responses to “MySQL функция для конвертирования bigint IP адресов в удобоваримые varchar”


  1. zakhar Says:

    Так вроде в mysql есть такая функция:
    SELECT INET_NTOA(2130706433);

  2. art Says:

    zakhar @ 24.11.2007, 18:46 #

    Так вроде в mysql есть такая функция:
    SELECT INET_NTOA(2130706433);

    незнал, спасибо

Leave a Reply

code