2013-03-13 9 views
7

PostgreSQL में IPv4 पते के लिए सही डेटा प्रकार क्या है?IPg4 पते के लिए PostgreSQL फ़ील्ड डेटा प्रकार

मैंने inet के बारे में सुना, लेकिन इसका कभी भी उपयोग नहीं किया।

मैं SELECT ... WHERE ip = '99.88.99.88' तरह SELECT क्वेरी करने की जरूरत है और यह मानव पठनीय प्रारूप के उत्पादन का समर्थन करना चाहिए (मानव पठनीय द्वारा मेरा मतलब है '99 .88.99.88 ')।

SELECT को वहां सबनेट द्वारा आईपी पते की क्षमता होना अच्छा लगेगा।

अग्रिम में किसी भी सुझाव के लिए धन्यवाद!

उत्तर

15

निर्मित cidr और inet प्रकार आप क्या चाहते हैं करते हैं और उपयुक्त ऑपरेटरों प्रदान करेगा:

regress=> SELECT '192.168.1.19'::inet << '192.168.1.0/24'::cidr; 
?column? 
---------- 
t 
(1 row) 

network datatype operators and functions पर और network datatypes पर PostgreSQL दस्तावेज़ देखें।

सीमित सूचकांक समर्थन cidr और inet प्रकारों के लिए प्रदान किया गया है; विशेष रूप से, 'श्रेणी में पता' प्रकार के प्रश्नों को कम से कम श्रेणी प्रश्नों में बदल दिया जाता है जहां पता स्थिर होता है। this (rather old) thread देखें।

क्रिस के बिंदु को फिर से देखें ip4r

3

inet के क्षेत्र होने के कारण यह केवल वही है जो आपको चाहिए।

ऑपरेटरों < <, < < =, >>, और >> = सबनेट शामिल करने के लिए परीक्षण।

4

मैं यह जोड़ना चाहता हूं कि अंतर्निर्मित प्रकार काफी शक्तिशाली हैं, और यही वह जगह है जहां आपको प्रारंभ करना चाहिए। हालांकि अगर आपको जीआईएन इंडेक्सिंग की आवश्यकता है, तो http://pgfoundry.org/projects/ip4r/

आईपी 4 आर (मैंने इसका उपयोग क्यों शुरू किया) के लिए एक मामला हो सकता है यदि आपको सीआईडीआर ब्लॉक स्टोर करने की आवश्यकता हो और यह सुनिश्चित कर लें कि किसी भी ब्लॉक में कोई अन्य ब्लॉक नहीं है। चूंकि इसके लिए जीआईएन इंडेक्सिंग की आवश्यकता है, इसलिए आपको अंतर्निहित प्रकारों के बजाय ip4r के साथ जाना होगा।

+0

धन्यवाद! मैंने सोचा कि आईपी श्रेणियों के लिए जीआईएन या जीआईएसटी इंडेक्स थे लेकिन उन्हें त्वरित खोज में नहीं मिला। –

+0

मैंने कठोर तरीके से खोज की (बहिष्करण बाधाओं का उपयोग करने की कोशिश कर रहा है) कि जीआईएन समर्थित नहीं था और लेखक द्वारा ip4r का नेतृत्व किया गया था। –

संबंधित मुद्दे