如何对在Oracle中存储为varchar的IP地址进行排序

CodeNotFound

如何排序在表中存储为varchar的IP地址,我正在尝试对记录进行排序,如果我按ORDER BY column_name asc排序。我得到排序后的值,但我不知道这是否是对存储为varchar的IP地址进行排序的正确方法。

因此,请建议我上述方法是否正确,请建议我可以这样做。

数据库:Oracle

谢谢

拉利特·库马尔(Lalit Kumar B)

如何排序在表中存储为varchar的IP地址,我正在尝试对记录进行排序,如果我按ORDER BY column_name asc排序。

您正在按字符串而不是数字排序

您可以将IP地址存储4个不同的NUMBER列中现在,您只有一列IP地址,并且所有4个字段都放在了一起,剩下的是带分隔符的字符串操作。

您可以通过两种方式做到这一点:

1. SUBSTR和TO_NUMBER

例如,

SELECT IP
FROM table_name
ORDER BY to_number(SUBSTR(IP,1,instr(IP,'.')-1)) ,
  to_number(SUBSTR(IP,instr(IP,'.')         +1, instr(IP,'.',1,2) - instr(IP,'.') - 1)),
  to_number(SUBSTR(IP,instr(IP,'.',1,2)     +1, instr(IP,'.',1,3) - instr(IP,'.',1,2) - 1)),
  to_number(SUBSTR(IP,instr(IP,'.',1,3)     +1))
/

2. REGEXP_SUBSTR和TO_NUMBER

例如,

SELECT IP
FROM table_name
ORDER BY TO_NUMBER (REGEXP_SUBSTR (IP, '[[:digit:]]+', 1, 1)) ASC ,
  TO_NUMBER (REGEXP_SUBSTR (IP, '[[:digit:]]+', 1, 2)) ASC ,
  TO_NUMBER (REGEXP_SUBSTR (IP, '[[:digit:]]+', 1, 3)) ASC ,
  TO_NUMBER (REGEXP_SUBSTR (IP, '[[:digit:]]+', 1, 4)) ASC 
/

由于REGEXP是CPU密集型操作,因此简单的SUBSTR方法会更快一些。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在python中为接口分配IP地址?

C ++将坐标存储为向量中的对象进行排序

Java如何对IP地址列表进行排序

在MySQL中对VARCHAR字段进行排序

更新表中存储为varchar的XML

在oracle中对列进行排序

如何对存储桶中的脚本进行排序?

如何在Windows 10上获取ORACLE 11 g DATABASE的IP地址以进行远程连接?

如何对存储在字典中的元组内部的数组进行排序

如何使用通配符对查询中的存储桶聚合进行排序?

如何将IP地址替换为列表中的字符串,以通过检查IP地址之间的重复来对python中的字符串进行排序

按IP地址对Excel列进行排序

如何对列表中存储的数据进行排序和输出

如何在Ubuntu中为服务设置专用的IP地址?

在MySQL中对varchar列进行排序

如何对在SQL Server 2008中存储为Nvarchar的会计月份进行排序

AOSP存储库中的SortCursor如何对它的值进行排序

如何按AM / PM升序对存储为varchar数据类型的日期时间进行排序?

如何过滤存储为varchar的mysql数据库中的IP地址

使用Python脚本对IP地址进行排序

如何搜索存储为varchar的日期范围?

如何按存储为值的日期对 Firebase 数据进行排序

我想根据 ip 地址对我的结果数组进行排序

MySQL如何对varchar值进行排序

如何在 MySql 中对 IP 地址进行排序,使 ipv4 排在 ipv6 地址之前?

如何在 oracle 中的“IN”位置对结果数据进行排序

如何在python中对ip地址的元组进行排序/排序

如何对输出进行排序,其中每个 IP 地址在 PowerShell 中都有最大值?

Powershell对txt文件中的IP地址进行排序