PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 12.22 » Langage SQL » Fonctions et opérateurs » Fonctions et opérateurs sur les adresses réseau

9.12. Fonctions et opérateurs sur les adresses réseau

Le Tableau 9.37 affiche les opérateurs disponibles pour les types cidr et inet. Les opérateurs <<, <<=, >>, >>= et && testent l'inclusion de sous-réseau. Ils ne considèrent que les parties réseau des deux adresses, ignorant toute partie hôte, et déterminent si une partie réseau est identique ou constitue un sous-réseau de l'autre.

Tableau 9.37. Opérateurs cidr et inet

OpérateurDescriptionExemple
< est plus petit queinet '192.168.1.5' < inet '192.168.1.6'
<= est plus petit que ou égal àinet '192.168.1.5' <= inet '192.168.1.5'
= est égal àinet '192.168.1.5' = inet '192.168.1.5'
>= est plus grand ou égal àinet '192.168.1.5' >= inet '192.168.1.5'
> est plus grand queinet '192.168.1.5' > inet '192.168.1.4'
<> n'est pas égal àinet '192.168.1.5' <> inet '192.168.1.4'
<< est contenu parinet '192.168.1.5' << inet '192.168.1/24'
<<= est contenu par ou égal àinet '192.168.1/24' <<= inet '192.168.1/24'
>> contientinet'192.168.1/24' >> inet '192.168.1.5'
>>= contient ou est égal àinet '192.168.1/24' >>= inet '192.168.1/24'
&& contient ou est contenu parinet '192.168.1/24' && inet '192.168.1.80/28'
~ NOT bit à bit~ inet '192.168.1.6'
& AND bit à bitinet '192.168.1.6' & inet '0.0.0.255'
| OR bit à bitinet '192.168.1.6' | inet '0.0.0.255'
+ additioninet '192.168.1.6' + 25
- soustractioninet '192.168.1.43' - 36
- soustractioninet '192.168.1.43' - inet '192.168.1.19'

Le Tableau 9.38 affiche les fonctions utilisables avec les types cidr et inet. Les fonctions abbrev, host, text ont principalement pour but d'offrir des formats d'affichage alternatifs.

Tableau 9.38. Fonctions cidr et inet

FonctionType de retourDescriptionExempleRésultat
abbrev(inet) textformat textuel d'affichage raccourciabbrev(inet '10.1.0.0/16')10.1.0.0/16
abbrev(cidr)textformat textuel d'affichage raccourciabbrev(cidr '10.1.0.0/16')10.1/16
broadcast(inet) inetadresse de broadcast pour le réseaubroadcast('192.168.1.5/24')192.168.1.255/24
family(inet) intextraction de la famille d'adresse ; 4 pour IPv4, 6 pour IPv6family('::1')6
host(inet) textextraction de l'adresse IP en textehost('192.168.1.5/24')192.168.1.5
hostmask(inet) inetconstruction du masque d'hôte pour le réseauhostmask('192.168.23.20/30')0.0.0.3
masklen(inet) intextraction de la longueur du masque réseaumasklen('192.168.1.5/24')24
netmask(inet) inetconstruction du masque réseaunetmask('192.168.1.5/24')255.255.255.0
network(inet) cidrextraction de la partie réseau de l'adressenetwork('192.168.1.5/24')192.168.1.0/24
set_masklen(inet, int) inetconfigure la longueur du masque réseau pour les valeurs inetset_masklen('192.168.1.5/24', 16)192.168.1.5/16
set_masklen(cidr, int)cidrconfigure la longueur du masque réseau pour les valeurs cidrset_masklen('192.168.1.0/24'::cidr, 16)192.168.0.0/16
text(inet) textextraction de l'adresse IP et de la longueur du masque réseau comme textetext(inet '192.168.1.5')192.168.1.5/32
inet_same_family(inet, inet) booleanles adresses sont d'une même famille ?inet_same_family('192.168.1.5/24', '::1')false
inet_merge(inet, inet) cidrle plus petit réseau incluant les deux réseaux indiquésinet_merge('192.168.1.5/24', '192.168.2.5/24')192.168.0.0/22

Toute valeur cidr peut être convertie en inet implicitement ou explicitement ; de ce fait, les fonctions indiquées ci-dessus comme opérant sur le type inet opèrent aussi sur le type cidr. (Lorsque les fonctions sont séparées pour les types inet et cidr, c'est que leur comportement peut différer.) Il est également permis de convertir une valeur inet en cidr. Dans ce cas, tout bit à la droite du masque réseau est silencieusement positionné à zéro pour créer une valeur cidr valide. De plus, une valeur de type texte peut être transtypée en inet ou cidr à l'aide de la syntaxe habituelle de transtypage : par exemple inet(expression) ou nom_colonne::cidr.

Le Tableau 9.39 affiche les fonctions utilisables avec le type macaddr. La fonction trunc(macaddr) renvoie une adresse MAC avec les trois derniers octets initialisés à zéro. Ceci peut être utilisé pour associer le préfixe restant à un manufacturier.

Tableau 9.39. Fonctions macaddr

FonctionType de retourDescriptionExempleRésultat
trunc(macaddr) macaddrinitialiser les trois octets finaux à zérotrunc(macaddr '12:34:56:78:90:ab')12:34:56:00:00:00

Le type macaddr supporte aussi les opérateurs relationnels standard (>, <=, etc.) de tri lexicographique, et les opérateurs arithmétiques sur les binaires (~, & et |) pour NOT, AND et OR

Tableau 9.40 montre les fonctions disponibles à utiliser avec le type macaddr8. La fonction trunc(macaddr8) renvoie une adresse MAC avec les cinq derniers octets positionnés à zéro. Cela peut être utilisé pour associer les préfixes restant avec un fabriquant.

Tableau 9.40. macaddr8 Fonctions

FonctionType de retourDescriptionExempleRésultat
trunc(macaddr8) macaddr8positionne les cinq derniers octets à zérotrunc(macaddr8 '12:34:56:78:90:ab:cd:ef')12:34:56:00:00:00:00:00
macaddr8_set7bit(macaddr8) macaddr8positionne le 7ème bit à un, également connu comme EUI-64 modifié, pour une inclusion dans une adresse IPv6macaddr8_set7bit(macaddr8 '00:34:56:ab:cd:ef')02:34:56:ff:fe:ab:cd:ef

Le type macaddr8 supporte également les opérateurs relationnels standard (>, <=, etc.) pour le tri, et les opérateurs d'arithmétique bit à bit (~, & et |) pour NOT, AND et OR.