Guest User

Untitled

a guest
Aug 17th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. Search hierarchical text in Oracle database
  2. IP_ADDRESS CIDR_SIZE
  3. ========= ==========
  4. 10.10 16
  5. 15.0 16
  6. 67.7 16
  7. 18.0 8
  8.  
  9. WITH ipv AS
  10. ( SELECT IP.*
  11. , NVL(REGEXP_SUBSTR( ip, 'd+', 1, 1 ),0) * 256 * 256 * 256 -- octet1
  12. + NVL(REGEXP_SUBSTR( ip, 'd+', 1, 2 ),0) * 256 * 256 -- octet2
  13. + NVL(REGEXP_SUBSTR( ip, 'd+', 1, 3 ),0) * 256 -- octet3
  14. + NVL(REGEXP_SUBSTR( ip, 'd+', 1, 4 ),0) AS ipnum -- octet4
  15. , 32-bits AS ignorebits
  16. FROM ips IP
  17. )
  18. SELECT IP1.ip, IP1.bits
  19. FROM ipv IP1
  20. WHERE NOT EXISTS
  21. ( SELECT 1
  22. FROM ipv IP2
  23. WHERE IP2.bits < IP1.bits
  24. AND TRUNC( IP2.ipnum / POWER( 2, IP2.ignorebits ) )
  25. = TRUNC( IP1.ipnum / POWER( 2, IP2.ignorebits ) )
  26. )
  27.  
  28. SQL> desc ips
  29. Name Null? Type
  30. ----------------------------------------- -------- ----------------------------
  31. IP NOT NULL VARCHAR2(16)
  32. BITS NOT NULL NUMBER
Add Comment
Please, Sign In to add comment