Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Search hierarchical text in Oracle database
- IP_ADDRESS CIDR_SIZE
- ========= ==========
- 10.10 16
- 15.0 16
- 67.7 16
- 18.0 8
- WITH ipv AS
- ( SELECT IP.*
- , NVL(REGEXP_SUBSTR( ip, 'd+', 1, 1 ),0) * 256 * 256 * 256 -- octet1
- + NVL(REGEXP_SUBSTR( ip, 'd+', 1, 2 ),0) * 256 * 256 -- octet2
- + NVL(REGEXP_SUBSTR( ip, 'd+', 1, 3 ),0) * 256 -- octet3
- + NVL(REGEXP_SUBSTR( ip, 'd+', 1, 4 ),0) AS ipnum -- octet4
- , 32-bits AS ignorebits
- FROM ips IP
- )
- SELECT IP1.ip, IP1.bits
- FROM ipv IP1
- WHERE NOT EXISTS
- ( SELECT 1
- FROM ipv IP2
- WHERE IP2.bits < IP1.bits
- AND TRUNC( IP2.ipnum / POWER( 2, IP2.ignorebits ) )
- = TRUNC( IP1.ipnum / POWER( 2, IP2.ignorebits ) )
- )
- SQL> desc ips
- Name Null? Type
- ----------------------------------------- -------- ----------------------------
- IP NOT NULL VARCHAR2(16)
- BITS NOT NULL NUMBER
Add Comment
Please, Sign In to add comment