数据库表中有张ip表,我想按ip字段,该字段是varchar2类型的进行排序,发现不行,求高手帮助!!!
select * from tab_ip order by ip asc;结果排序不是规则的如图:,怎么办??求高手
select * from tab_ip order by ip asc;结果排序不是规则的如图:,怎么办??求高手
解决方案 »
- 问个mysql workbench的问题,真心求教
- websphere + struts 2
- Hibernate 一对多关联查询 空查询
- SSH整合时出现的问题!
- 实现文章的上一篇,下一篇的文章标题
- Spring MVC 与其它的 Web MVC 框架 最大的区别是什么,我们该如何选择WEB 框架?
- 在RCP使用jasperreport的问题
- 求解惑
- 在struts中怎么初始化multibox 的值?????????????????
- Sturts中用 BeanUtils.copyProperties 拷贝PO大VO出现异常,求助
- 在hibernate配置在application.xml的情况下,怎样在普通的java类中初始化hibernate.session对象?
- java mybits集成 数据类型转换错误
在字符串c1的左边用字符串c2填充,直到长度为n时为止可以用这个函数将位数不足3位的在左面补0 。之后再根据这个字段排序。应该可以。
其他数据库不知道有没有这个函数
但是sql估计不容易实现。
用这个试试吧,应该好用的
第一种方式:select *
from users
order by
cast(substring(IP, 1, charindex('.',IP)-1) as numeric),
cast(substring(IP, charindex('.',IP)+1, charindex('.',IP,charindex('.',IP)+1)-charindex('.',IP)-1) as numeric),
cast(substring
(
IP,
charindex('.',IP,charindex('.',IP)+1)+1,
charindex('.',IP,charindex('.',IP,charindex('.',IP)+1)+1)-charindex('.',IP,charindex('.',IP)+1)-1
)
as numeric),
cast(
substring
(
IP,
charindex('.',IP,charindex('.',IP,charindex('.',IP)+1)+1)+1,
len(IP)-charindex('.',IP,charindex('.',IP,charindex('.',IP)+1)+1)
)
as numeric)
第二种:
if exists (select * from dbo.sysobjects)
drop function [dbo].[Get_Full_IP]
GO
create FUNCTION [dbo].[Get_Full_IP] (@IP nvarchar(20))
RETURNS varchar(20)
AS
BEGIN
DECLARE @result varchar(20)
set @result=right('000'+ParseName(@IP,4),3)+'.'+right('000'+ParseName(@IP,3),3)+'.'+right('000'+ParseName(@IP,2),3)+'.'+right('000'+ParseName(@IP,1),3)
return @result
ENDgoselect [dbo].[Get_Full_IP](ip) as ip from users order by ip
第二种存在弊端,就是加上的0没有移除,在想怎么搞掉。
regexp_substr(ip,'[^.]+',1,3)+0,regexp_substr(ip,'[^.]+',1,4)+0
不过可惜只是Oracle的,我现在用hibernate,要是有个通用的hql语句就好了。
不过可惜只是Oracle的,我现在用hibernate,要是有个通用的hql语句就好了。
不过可惜只是Oracle的,我现在用hibernate,要是有个通用的hql语句就好了。
ID NvarIP
1 192.168.0.1
4 192.168.0.90
2 192.168.0.112
3 192.168.0.133
5 192.168.1.133用临时表直观点吧