查询时如何根据一个自定义的函数来进行排序

如何写一个函数将IP地址转化为十进制数字的函数IPTONuM然后当查询iptable的时候根据IPTONuM得到的结果进行排序

【iptable表不仅有IP地址还有其他信息】

例如:

select * from iPtable order by IPTONuM(ip)

我自己尝试写了一个函数并且组成SQL使用

CREATE OR REPLACE FUNCTION IPTONuM(ipaddress  VARCHAR2) RETURN NUMBER AS

m_return     NUMBER;

m_ip            VARCHAR2(1000) := ipaddress;

BEGIN

FOR i IN 1 .. 3 LOOP

m_ip := SUBSTR(m_ip, 1, INSTR(m_ip, '.') - 1) || '*POWER(256, ' ||

(4 - i) || ') + ' || SUBSTR(m_ip, INSTR(m_ip, '.') + 1);

END LOOP;

EXECUTE IMMEDIATE 'SELECT ' || m_ip || ' FROM iptable'

INTO m_return;

RETURN m_return;

END;

select * from iptable order by func_iptonum(RXRG_7420)

可是

报了一个错:【】里面的内容

Warnings: --->

W (1): Warning: 执行完毕, 但带有警告

0 record(s) affected

乞求各路大神,大牛出手相助,为什么报错了,还是思路错了

------解决思路----------------------

函数中的动态语句那里,应该会返回多个值,这样会导致select into 失败

不太理解动态语句的作用是什么,直接return m_ip不就好了?

------解决思路----------------------

连接到:

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> CREATE OR REPLACE FUNCTION IPTONuM(ipaddress  VARCHAR2) RETURN NUMBER AS

2       m_return     NUMBER;

3       m_ip            VARCHAR2(1000) := ipaddress;

4  BEGIN

5      select sum(to_number(regexp_substr(ipaddress,'[^.]+',1,rownum))*power(256,4-rownum))

6      into m_return

7      from dual connect by rownum<=4;

8    RETURN m_return;

9  END;

10  /

函数已创建。

SQL> select iptonum('1.1.1.1') from dual;

IPTONUM('1.1.1.1')

------------------

16843009

SQL> select iptonum('192.168.1.1') from dual;

IPTONUM('192.168.1.1')

----------------------

3232235777

SQL>

帮你写的函数测试结果,你可以自己去试试你的函数,单独调用是否好用

如果好用的话,就肯定是数据的问题了

oracle怎么自定义排序,查询时怎么根据一个自定义的函数来进行排序相关推荐

  1. Python可视化matplotlib自定义:运行时参数修改、自定义样式、默认样式+plt.style.use()

    Python可视化matplotlib自定义:运行时参数修改.自定义样式.默认样式+plt.style.use() 目录 Python可视化matplotlib自定义:运行时参数修改.自定义样式.默认 ...

  2. oracle中使用sql查询时字段为空则赋值默认

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. oracle 通过 nvl( )函数sql 查询时为 空值 赋默认值 oracle 函数介绍之nvl ...

  3. oracle连接连表查询时,两表的连接字段类型不一致的时候,会导致ora 01722无效数字错误,这时候需要转换...

    类型不匹配,需要类型转换,函数:to_char()转换成字符, to_num()转换成数字 转载于:https://www.cnblogs.com/shenzhichipingguo/p/871710 ...

  4. oracle同义词转换不,查询时出现ora-00980:同义词转换不再有效,该怎么处理

    SQL codewith tmp_a as (select distinct nvl(m.rdate, n.rdate), max(case when m.rdate=n.rdate and m.us ...

  5. destoon 多表联合查询时出现解析错误,parse_str函数解析错误

    数据库前缀  wb_ 标签 ,调用文章时获取评论数量 <!--{php $tags=tag("table=article_24 a left join wb_comment_stat ...

  6. 14 | 排序优化:如何实现一个通用的、高性能的排序函数?

    问题:平时的开发中,我们都是直接使用这些现成的函数来实现业务逻辑中的排序功能.这些排序函数是如何实现的吗?底层都利用了哪种排序算法呢?比如 C 语言中 qsort(),C++ STL 中的 sort( ...

  7. oracle分页排序查询,Oracle分页查询中排序与效率问题解决方法详解

    本文将结合作者近日工作中,在ORACLE数据库分页查询时,遇到一个小问题,为大家讲解如何解决Oracle分页查询中排序与效率问题. 原始未分页查询Sql代码如下: select ROWNUM rn, ...

  8. 开发:异常收集之 ibatis+Oracle 查询时: ORA-00911错误

    刚刚在用ibatis对Oracle进行查询时,出现一个ORA-00911: 无效字符的错误,纠结半天,查询的SQL已经在PL/SQL里面测试好了,可以查询出数据,但是一到java程序里面查询就不行,后 ...

  9. SQL条件查询,分组查询,排序查询,分页查询

    DQL查询操作(条件查询,分组查询,排序查询,分页查询) 文章目录 DQL查询操作(条件查询,分组查询,排序查询,分页查询) 一.查询语法 二.基础查询 三.条件查询 四.排序查询 五.分组查询 六. ...

最新文章

  1. 硬铺路、软筑墙:三星移动在中国的新路径
  2. Tomcat官方文档关于数据源配置的内容
  3. NHibernate之映射文件配置说明(转载2)
  4. 回归Dos操作的快感,进入PowerShell世界 (转)
  5. linux 休眠定时唤醒_Linux重启关机命令经验之谈
  6. python字符串的删除操作_Python 字符串操作(string替换、删除、截取、复制、连接、比较、...
  7. struts2 + ajax 用户名登录验证(struts2+spring+ibatis)
  8. 行测---图形推理思维导图总结
  9. 5节锂电池升压充电管理芯片
  10. 天肌处理器天梯排行榜2022 天肌处理器发布时间排行
  11. 号外: 我开通了英语专栏
  12. linux文件夹怎么恢复默认打开方式,怎么还原打开方式_在win7电脑上还原文件默认打开方式的步骤 - 驱动管家...
  13. 韦根读卡电路c语言程序,私人项目开源 — 低成本125K RFID读卡模块(原理图+PCB+代码+调试)...
  14. Linux下8723be网卡,解决 RTL8723BE 无线网卡不稳定的问题
  15. 游戏模拟器成了外挂帮凶,灰产对抗再升级
  16. wpf之Binging类
  17. 改进型脉振高频注入源码 stm32工程 脉振高频注入是一种通过在d轴注入正弦电压
  18. 【全网最全面】SourceTree使用教程详解(连接远程仓库,克隆,拉取,提交,推送,新建/切换/合并分支,冲突解决,提交PR)...
  19. c++ socket 多线程 网络聊天室
  20. 区块链项目ICO评估模型

热门文章

  1. 姓名抽签器c语言,在线抽签器
  2. Spring高级之注解@lazy详解(超详细)
  3. android必看java_Android开发工程师必看笔试题:Java基础选择题(一)
  4. Go 语言基础(三)——基本数据类型
  5. linux mysql dump命令_linux下mysql命令
  6. 回调函数 相当于线程_C++屌屌的观察者模式-同步回调和异步回调
  7. gm220s路由器怎么设置_巴法诺无线路由器连接打印机怎么设置【图文教程】
  8. android 调用系统自带文件管理器_编写使用Android 系统自带的文字转语音代码
  9. joblib多线程、多进程学习案例(一)——一步步写多进程任务
  10. Python3.x中Django-xadmin的添加