Przydatne SQL’e

Poniżej dla potomoności, parę przydatnych funkcji w MySQL służących do oblicznia danych sieciowych:

DROP FUNCTION IF EXISTS check_network;
DROP FUNCTION IF EXISTS get_network;
DROP FUNCTION IF EXISTS get_broadcast;
delimiter |
CREATE FUNCTION  check_network(ip1 VARCHAR(25), ip_netmask VARCHAR(25), ip2 VARCHAR(25))
RETURNS INT
DETERMINISTIC
BEGIN
IF((INET_ATON(ip2) & INET_ATON(ip_netmask)) = (INET_ATON(ip1) & INET_ATON(ip_netmask)))
THEN
RETURN 1;
ELSE
RETURN 0;
END IF;
END|

CREATE FUNCTION  get_network(ip1 VARCHAR(25), ip_netmask VARCHAR(25))
RETURNS VARCHAR(20)
DETERMINISTIC
BEGIN
RETURN INET_ATON(ip1) & INET_ATON(ip_netmask);
END|

CREATE FUNCTION  get_broadcast(ip1 VARCHAR(25), ip_netmask VARCHAR(25))
RETURNS VARCHAR(20)
DETERMINISTIC
BEGIN
RETURN  INET_NTOA(INET_ATON(ip1) + (INET_ATON('255.255.255.255') - INET_ATON(ip_netmask)));
END|

delimiter ;