Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Oracle:Chuyển đổi địa chỉ IPv4 thành một số?

  • trích xuất bốn octet của địa chỉ bằng regexp_substr.
  • điều chỉnh lại giá trị bằng cách chuyển các octet trở lại vị trí ban đầu của chúng.

Regexp có thể tương đối đắt, vì vậy nếu bạn đang làm việc này nhiều, bạn có thể cân nhắc lưu vào bộ nhớ đệm giá trị số trong bảng của mình cùng với địa chỉ IP.

with addr as (select '239.255.2.51' ip from dual)
select ip, to_number(regexp_substr(ip, '\d+', 1, 1)) * 16777216 +
           to_number(regexp_substr(ip, '\d+', 1, 2)) * 65536 +
           to_number(regexp_substr(ip, '\d+', 1, 3)) * 256 +
           to_number(regexp_substr(ip, '\d+', 1, 4)) n
  from addr;

IP                     N
------------- ----------      
239.255.2.51  4026466867 

Để hoàn thiện, đây là cách thực hiện theo cách khác.

with addr as (select 4026466867 n from dual)
select n, mod(trunc(n/16777216),256) ||'.'||
          mod(trunc(n/65536),   256) ||'.'||
          mod(trunc(n/256),     256) ||'.'||
          mod(n,                256) ip
from addr;

         N IP                                                                                                                                                                                                                                                             
---------- ------------
4026466867 239.255.2.51                                                                                                                                                                                                                                                     


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách chèn một chuỗi dài vào kiểu dữ liệu CLOB trong Oracle

  2. Oracle cùng một tên bảng trên các lược đồ khác nhau?

  3. Làm cách nào để tính giá trị trung bình của một cột và sau đó đưa nó vào một truy vấn chọn trong oracle?

  4. Một hoạt động chèn có thể làm cho một hoạt động DDL khác phải chờ đợi không?

  5. Chuyển giá trị được lưu trữ trong biến PL / SQL vào mệnh đề IN