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!
Die integrierten cidr
und inet
-Typen tun, was Sie wollen und bieten geeignete Operatoren:
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
.
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.
Tags und Links sql postgresql ip