2013-04-24 14 views
7

में मंत्रिमंडल मैदान पर की तरह उपयोग करने के लिए मैं कैसे निम्न क्वेरी प्रदर्शन करने की जरूरत है:Postgres

SELECT * FROM users WHERE ip LIKE '88.99.%'; 

समस्या यह है कि inet डेटाप्रकार वाइल्डकार्ड (कम से कम तरीके से नहीं मैं का उपयोग किया है समर्थन करने के लिए लगता है नहीं करता है उन्हें पिछली क्वेरी में)।

मुझे क्या जानना है कि क्या यह LIKE फ़िल्टर निर्दिष्ट करने से पहले फ़ील्ड को स्ट्रिंग में बदलने के लिए एक स्मार्ट चाल होगी? (दूसरी तरफ, यह संभवतः पूरी क्वेरी को धीमा कर देगा, भले ही दृष्टिकोण स्वयं मान्य था।)

उत्तर

20

ऐसे प्रश्नों के लिए सबनेट ऑपरेटरों का उपयोग करें। '88.99.0.0/16' यह करना चाहिए:

SELECT * FROM users WHERE ip << inet '88.99.0.0/16'; 
6

एक अन्य विकल्प जो मेरे लिए काम किया है, तो आप एक स्ट्रिंग तुलना करना चाहते हैं यह है:

SELECT * FROM users WHERE TEXT(ip) LIKE '88.99.%'; 

हालांकि यह "How to use LIKE on inet field in Postgres" से कम कुशल हो जाएगा।

संदर्भ: https://www.postgresql.org/docs/8.2/static/functions-net.html

+0

इस मामले में डेटाप्रकार मंत्रिमंडल, सभी डेटा के कलाकारों से बचने की कोशिश कर रहा है। –