में आईपी रेंज से सीआईडीआर का चयन करें मेरे पास आईपी रेंज की एक तालिका है और मुझे किसी विशिष्ट देश के लिए अस्वीकार करने के लिए नेटवर्क की एक सूची उत्पन्न करने की आवश्यकता है।MySQL
तो मैं इसका उपयोग करके अपने डीबी से आईपी श्रेणियों की एक सूची उत्पन्न कर सकता हूं।
SELECT
ip_from,
Inet_ntoa(ip_from),
ip_to,
Inet_ntoa(ip_to)
FROM
ip_address_data
WHERE
country_code = 'XX'
LIMIT 1
जो इस परिणाम
ip_from inet_ntoa(ip_from) ip_to inet_ntoa(ip_to)
16777472 1.0.1.0 16778239 1.0.3.255
उत्पन्न करता है लेकिन मैं सीआईडीआर प्रारूप में है कि उत्पादन की जरूरत है और कभी कभी सीमा से अधिक पंक्तियां इस तरह लौटा दी जाएगी।
1.0.1.0/24
1.0.2.0/23
क्या कोई चुनिंदा कथन का उपयोग करके इन्हें गतिशील रूप से उत्पन्न करने का कोई तरीका है? यह वाक्यविन्यास भयानक होगा लेकिन मुझे लगता है कि यह एक संग्रहित प्रक्रिया होनी चाहिए यदि यह इनपुट इनपुट प्रति एक से अधिक आउटपुट पंक्ति वापस करने जा रहा है।
SELECT
CONCAT('/sbin/route add -net ', CONVERT_TO_CIDR(ip_from,ip_to), ' reject;') AS command
FROM
ip_info.ip_address_data
WHERE
country_code='XX'
डाउनवोट क्यों? आपका कारण काम नहीं करता है। मैं राय की तलाश नहीं कर रहा हूं यह एक साधारण गणित समस्या है जिसे मुझे सहायता चाहिए। – jbrahy
यह वार्तालाप http://stackoverflow.com/questions/595748/is-there-way-to-match-ip-with-ipcidr-straight-from-select-query?rq=1 –