首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQL中按IP地址排序的最佳方法

在SQL中按IP地址排序的最佳方法
EN

Stack Overflow用户
提问于 2014-04-16 03:31:58
回答 5查看 6.7K关注 0票数 5

我使用PDO通过SQLITE3连接到我的SpiceWorks数据库。我正在尝试按IP地址顺序显示设备列表。以下是我当前的查询:

代码语言:javascript
复制
SELECT name, ip_address FROM `devices` ORDER BY ip_address

这样做的问题是,它的组织方式很奇怪:

有什么简单的方法可以解决这个问题吗?

我不可能编辑数据库,因为它会通过SpiceWorks关闭。我需要一种在SQL中做到这一点的方法。

EN

回答 5

Stack Overflow用户

发布于 2016-02-25 04:04:08

你有没有尝试过INET_ATON函数?这可能是一个迟来的答案,但可能会对其他人有所帮助。

代码语言:javascript
复制
SELECT name, ip_address
FROM devices
ORDER BY
INET_ATON(ip_address)
票数 4
EN

Stack Overflow用户

发布于 2016-02-11 17:49:59

我已经实现了如下代码:

代码语言:javascript
复制
SELECT IP FROM iplist ORDER BY

CAST(substr(trim(IP),1,instr(trim(IP),'.')-1) AS INTEGER),  

   CAST(substr(substr(trim(IP),length(substr(trim(IP),1,instr(trim(IP),'.')))+1,length(IP)) ,1, instr(substr(trim(IP),length(substr(trim(IP),1,instr(trim(IP),'.')))+1,length(IP)),'.')-1) AS INTEGER), 

        CAST(substr(substr(trim(IP),length(substr(substr(trim(IP),length(substr(trim(IP),1,instr(trim(IP),'.')))+1,length(IP)) ,1, instr(substr(trim(IP),length(substr(trim(IP),1,instr(trim(IP),'.')))+1,length(IP)),'.')))+length(substr(trim(IP),1,instr(trim(IP),'.')))+1,length(IP)) ,1, instr(substr(trim(IP),length(substr(substr(trim(IP),length(substr(trim(IP),1,instr(trim(IP),'.')))+1,length(IP)) ,1, instr(substr(trim(IP),length(substr(trim(IP),1,instr(trim(IP),'.')))+1,length(IP)),'.')))+length(substr(trim(IP),1,instr(trim(IP),'.')))+1,length(IP)),'.')-1) AS INTEGER), 

        CAST(substr(trim(IP),length(substr(substr(trim(IP),length(substr(substr(trim(IP),length(substr(trim(IP),1,instr(trim(IP),'.')))+1,length(IP)) ,1, instr(substr(trim(IP),length(substr(trim(IP),1,instr(trim(IP),'.')))+1,length(IP)),'.')))+length(substr(trim(IP),1,instr(trim(IP),'.')))+1,length(IP)) ,1, instr(substr(trim(IP),length(substr(substr(trim(IP),length(substr(trim(IP),1,instr(trim(IP),'.')))+1,length(IP)) ,1, instr(substr(trim(IP),length(substr(trim(IP),1,instr(trim(IP),'.')))+1,length(IP)),'.')))+length(substr(trim(IP),1,instr(trim(IP),'.')))+1,length(IP)),'.')))+ length(substr(trim(IP),1,instr(trim(IP),'.')))+length(substr(substr(trim(IP),length(substr(trim(IP),1,instr(trim(IP),'.')))+1,length(IP)) ,1, instr(substr(trim(IP),length(substr(trim(IP),1,instr(trim(IP),'.')))+1,length(IP)),'.')))+1,length(trim(IP))) AS INTEGER)
票数 3
EN

Stack Overflow用户

发布于 2014-04-16 03:46:26

代码语言:javascript
复制
ORDER BY
CAST(substr(ip_address,1,instr(ip_address,'.')) AS NUMERIC),
CAST(substr(ip_address,instr(ip_address,'.'), instr(substr(ip_address,instr(ip_address,'.')))) AS NUMERIC),

像这样的东西应该是可行的。不过那会很糟糕的。(此应按前两个八位字节进行排序...)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23092783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档