oracle怎么自定义排序,查询时怎么根据一个自定义的函数来进行排序
查询时如何根据一个自定义的函数来进行排序
如何写一个函数将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怎么自定义排序,查询时怎么根据一个自定义的函数来进行排序相关推荐
- Python可视化matplotlib自定义:运行时参数修改、自定义样式、默认样式+plt.style.use()
Python可视化matplotlib自定义:运行时参数修改.自定义样式.默认样式+plt.style.use() 目录 Python可视化matplotlib自定义:运行时参数修改.自定义样式.默认 ...
- oracle中使用sql查询时字段为空则赋值默认
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. oracle 通过 nvl( )函数sql 查询时为 空值 赋默认值 oracle 函数介绍之nvl ...
- oracle连接连表查询时,两表的连接字段类型不一致的时候,会导致ora 01722无效数字错误,这时候需要转换...
类型不匹配,需要类型转换,函数:to_char()转换成字符, to_num()转换成数字 转载于:https://www.cnblogs.com/shenzhichipingguo/p/871710 ...
- 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 ...
- destoon 多表联合查询时出现解析错误,parse_str函数解析错误
数据库前缀 wb_ 标签 ,调用文章时获取评论数量 <!--{php $tags=tag("table=article_24 a left join wb_comment_stat ...
- 14 | 排序优化:如何实现一个通用的、高性能的排序函数?
问题:平时的开发中,我们都是直接使用这些现成的函数来实现业务逻辑中的排序功能.这些排序函数是如何实现的吗?底层都利用了哪种排序算法呢?比如 C 语言中 qsort(),C++ STL 中的 sort( ...
- oracle分页排序查询,Oracle分页查询中排序与效率问题解决方法详解
本文将结合作者近日工作中,在ORACLE数据库分页查询时,遇到一个小问题,为大家讲解如何解决Oracle分页查询中排序与效率问题. 原始未分页查询Sql代码如下: select ROWNUM rn, ...
- 开发:异常收集之 ibatis+Oracle 查询时: ORA-00911错误
刚刚在用ibatis对Oracle进行查询时,出现一个ORA-00911: 无效字符的错误,纠结半天,查询的SQL已经在PL/SQL里面测试好了,可以查询出数据,但是一到java程序里面查询就不行,后 ...
- SQL条件查询,分组查询,排序查询,分页查询
DQL查询操作(条件查询,分组查询,排序查询,分页查询) 文章目录 DQL查询操作(条件查询,分组查询,排序查询,分页查询) 一.查询语法 二.基础查询 三.条件查询 四.排序查询 五.分组查询 六. ...
最新文章
- 硬铺路、软筑墙:三星移动在中国的新路径
- Tomcat官方文档关于数据源配置的内容
- NHibernate之映射文件配置说明(转载2)
- 回归Dos操作的快感,进入PowerShell世界 (转)
- linux 休眠定时唤醒_Linux重启关机命令经验之谈
- python字符串的删除操作_Python 字符串操作(string替换、删除、截取、复制、连接、比较、...
- struts2 + ajax 用户名登录验证(struts2+spring+ibatis)
- 行测---图形推理思维导图总结
- 5节锂电池升压充电管理芯片
- 天肌处理器天梯排行榜2022 天肌处理器发布时间排行
- 号外: 我开通了英语专栏
- linux文件夹怎么恢复默认打开方式,怎么还原打开方式_在win7电脑上还原文件默认打开方式的步骤 - 驱动管家...
- 韦根读卡电路c语言程序,私人项目开源 — 低成本125K RFID读卡模块(原理图+PCB+代码+调试)...
- Linux下8723be网卡,解决 RTL8723BE 无线网卡不稳定的问题
- 游戏模拟器成了外挂帮凶,灰产对抗再升级
- wpf之Binging类
- 改进型脉振高频注入源码 stm32工程 脉振高频注入是一种通过在d轴注入正弦电压
- 【全网最全面】SourceTree使用教程详解(连接远程仓库,克隆,拉取,提交,推送,新建/切换/合并分支,冲突解决,提交PR)...
- c++ socket 多线程 网络聊天室
- 区块链项目ICO评估模型
热门文章
- 姓名抽签器c语言,在线抽签器
- Spring高级之注解@lazy详解(超详细)
- android必看java_Android开发工程师必看笔试题:Java基础选择题(一)
- Go 语言基础(三)——基本数据类型
- linux mysql dump命令_linux下mysql命令
- 回调函数 相当于线程_C++屌屌的观察者模式-同步回调和异步回调
- gm220s路由器怎么设置_巴法诺无线路由器连接打印机怎么设置【图文教程】
- android 调用系统自带文件管理器_编写使用Android 系统自带的文字转语音代码
- joblib多线程、多进程学习案例(一)——一步步写多进程任务
- Python3.x中Django-xadmin的添加