PostgreSQL-Felddatentyp für IPv4-Adressen

8

Was ist der korrekte Datentyp für IPv4-Adressen in PostgreSQL?

Ich habe von inet gehört, aber nie benutzt.

Ich muss SELECT -Abfragen wie SELECT ... WHERE ip = '99.88.99.88' ausführen und es sollte die Ausgabe eines für Menschen lesbaren Formats unterstützen (mit lesbarem Text meine ich '99 .88.99.88 ').

Es wäre schön, SELECT der IP-Adressen von dort subnet zu haben.

Vielen Dank für etwaige Vorschläge im Voraus!

    
Aley 13.03.2013, 11:35
quelle

3 Antworten

15

Die integrierten cidr und inet -Typen tun, was Sie wollen und bieten geeignete Operatoren:

%Vor%

Siehe die PostgreSQL-Dokumentation zu Netzwerk-Datentyp-Operatoren und Funktionen und auf der Netzwerk-Datentypen .

Für die Typen cidr und inet steht eine eingeschränkte Indexunterstützung zur Verfügung. Insbesondere werden Abfragen vom Typ "Adresse im Bereich" zumindest dann in Bereichsabfragen umgewandelt, wenn die Adresse eine Konstante ist. Siehe diesen (ziemlich alten) Thread .

Siehe auch Chris 'Punkt re ip4r .

    
Craig Ringer 13.03.2013, 11:42
quelle
4

Ich möchte hinzufügen, dass die eingebauten Typen sehr mächtig sind, und hier sollten Sie anfangen. Wenn Sie jedoch eine GIN-Indizierung benötigen, besuchen Sie Ссылка

Ein Fall für ip4r (warum ich anfing, es zu verwenden) könnte sein, wenn Sie CIDR-Blöcke speichern müssen und sicherstellen, dass kein Block einen anderen Block enthält. Da dies eine GIN-Indizierung erfordert, müssen Sie mit ip4r anstelle der integrierten Typen gehen.

    
Chris Travers 13.03.2013 12:32
quelle
3

Ссылка mit einem Feld von inet type es ist nur was du machst brauchen.

  

Die Operatoren & lt; & lt ;, & lt; & lt; =, & gt; & gt; & gt; und & gt; & gt; = Testen auf Subnetzeinschluss.

    
triclosan 13.03.2013 11:39
quelle

Tags und Links