Étant donné une table contenant les adresses IPv4 quad pointillées stockées comme VARCHAR(15)
, par exemple:récurage adresses IPv4-quadruplet dans SQL
ipv4
--------------
172.16.1.100
172.16.50.5
172.30.29.28
ce qui est un moyen pratique de SELECT
tous "ipv4"
champs avec les deux derniers octets épurés, de sorte que ce qui précède deviendrait:
ipv4
------------
172.16.x.y
172.16.x.y
172.30.x.y
Target RDBMS est postgresql 8.4, mais le plus portable, mieux c'est!
Merci.
MISE À JOUR: alors que j'apprécie (et ne upvote) réponses lisse INET
/CIDR
, Je cherche à produire une chaîne sortie avec des caractères non numériques substitués pour les deux derniers octets. (Et, encore une fois, plus portable le mieux!)
mes postgres m'a dit d'écrire que de sélectionner regexp_replace ('172.16.1.100', E '(\\ d +) {2} $ ',' .x.y '); – Unreason
+1. Ceci est similaire à, mais une nette amélioration par rapport à mon approche originale, qui était: 'SUBSTRING (" ipv4 "FROM E '^ (([1-9] [0-9] {0,2} \.) {2 }) ') || 'x.y'' Merci! – pilcrow
N'utilisez pas une regex lorsque vous n'en avez pas besoin. Utilisez simplement les fonctions et les opérateurs du réseau Propper. –