`

ORCLE中例如1.11.123排序

 
阅读更多
create or replace function num_sort(str varchar2) return varchar2 is
  v_s varchar2(50);
  i number;--存储获取的位置
  j number;--循环的重要变量
  x number;--存储第二个特殊字符的位置
  y varchar2(50);--接收判断是否大于10
begin
  j := 0;
  x := 0;
  v_s := '';
  select nvl(length(translate(str, 'a0123456789', ' ')),-1) into i from dual;
  if (str is null) then--最顶级
     v_s := '00';
  elsif (str is not null and i=-1) then--第二级
     if str<10 then--1位数字,补0再屏贴
         v_s := '0' || str;
     else
         v_s :=  str;
     end if;
  end if;
  while i > 0 loop
    j := j + 1;
    if (j=1) then--第一个
       select substr(str,1,INSTR(str,'.',1,1)) into y from dual;
       if y<10 then--1位数字,补0再屏贴
         v_s := v_s || '0' || y;
       else
         v_s := v_s || y;
       end if;
    end if;
    if (i>1) then--中间  i>1说明还没有结束,如果只有一个特殊字符,那么只会循环一次,且不会进入中间
        select INSTR(str,'.',1,j+1)-INSTR(str,'.',1,j) into x  from dual;
        if (x = 2) then--1位数字,补0再屏贴
           select substr(str,INSTR(str,'.',1,j)+1,1) into y  from dual;
        elsif (x = 3) then --2位数字,补0再屏贴
           select substr(str,INSTR(str,'.',1,j)+1,2) into y  from dual;
        end if;
    elsif (i=1) then--取最后一个
       select substr(str,INSTR(str,'.',1,j)+1,3) into y from dual;
    end if;
    --每次循环的时候,取特殊字符 . 对应的字符串是否小于10,
    --如果小于,使用0进行补充并组合在一个字符串中
    if y<10 then--1位数字,补0再屏贴
         v_s := v_s || '00' || y;
       elsif y<100 then
         v_s := v_s || '0' || y;
       else
         v_s := v_s || y;
       end if;
    i := i - 1;--每次减一,循环的条件
  end loop;
  return v_s;
end num_sort;
分享到:
评论

相关推荐

    收获不知Oracle

    2.2.3.2 体系结构中提交的探讨34 2.2.3.3 劳模的评选 38 2.2.3.4 回滚的研究 40 2.2.3.5 一致的查询 43 2.2.3.6 一致读的原理46 2.2.3.7 实践的体会 49 2.3 体系学习让SQL性能提升千倍 65 2.3.1 一起探索体系学习的...

    ORACLE9i_优化设计与系统调整

    第一部分 ORACLE系统优化基本知识 23 第1章 ORACLE结构回顾 23 §1.1 Oracle数据库结构 23 §1.1.1 Oracle数据字典 23 §1.1.2 表空间与数据文件 24 §1.1.3 Oracle实例(Instance) 24 §1.2 Oracle文件 26 §1.2.1...

    Java学习笔记-个人整理的

    {1.11.2.1}选择排序}{38}{subsubsection.1.11.2.1} {1.11.2.2}冒泡排序}{39}{subsubsection.1.11.2.2} {1.11.2.3}插入排序}{40}{subsubsection.1.11.2.3} {1.11.3}递归调用}{41}{subsection.1.11.3} {1.12}Java...

    C#程序开发范例宝典(第2版).part08

    实例071 在ListView控件中对数据排序或统计 92 实例072 在ListView控件中绘制底纹 93 实例073 在列表视图中拖动视图项 94 实例074 使ListView控件中的选择项高亮显示 97 实例075 带复选框的ListView控件 99 2.7...

    C#程序开发范例宝典(第2版).part13

    实例071 在ListView控件中对数据排序或统计 92 实例072 在ListView控件中绘制底纹 93 实例073 在列表视图中拖动视图项 94 实例074 使ListView控件中的选择项高亮显示 97 实例075 带复选框的ListView控件 99 2.7...

    C#程序开发范例宝典(第2版).part02

    实例071 在ListView控件中对数据排序或统计 92 实例072 在ListView控件中绘制底纹 93 实例073 在列表视图中拖动视图项 94 实例074 使ListView控件中的选择项高亮显示 97 实例075 带复选框的ListView控件 99 2.7...

    C#程序开发范例宝典(第2版).part12

    实例071 在ListView控件中对数据排序或统计 92 实例072 在ListView控件中绘制底纹 93 实例073 在列表视图中拖动视图项 94 实例074 使ListView控件中的选择项高亮显示 97 实例075 带复选框的ListView控件 99 2.7...

    Visual C++程序开发范例宝典(PDF扫描版).part3

     9.6 排序.c分组统计   cc实例252 对数据进行降序查询   cc实例253 对数据进行多条件排序   cc实例254 按仓库分组统计图书库存(多列)   cc实例255 多表分组统计   9.7 HAVING语句应用   cc实例...

    Visual C++程序开发范例宝典(PDF扫描版).part2

     9.6 排序.c分组统计   cc实例252 对数据进行降序查询   cc实例253 对数据进行多条件排序   cc实例254 按仓库分组统计图书库存(多列)   cc实例255 多表分组统计   9.7 HAVING语句应用   cc实例...

    Visual C++ 程序开发范例宝典 源码 光盘 part2

    cc实例248 按月查询数据 9.5 大小比较.c逻辑查询.c重复记录查询 cc实例249 查询数据大于指定条件的数据 cc实例250 NOT与谓词进行组合条件的查询 cc实例251 查询时不显示重复记录 9.6 排序.c分组统计 cc...

    C#.net_经典编程例子400个

    81 实例068 在ListView控件中对数据排序或统计 83 实例069 在ListView控件中绘制底纹 84 实例070 在列表视图中拖动视图项 85 实例071 用ListView控件选取整行数据 88 实例072 用ListView...

Global site tag (gtag.js) - Google Analytics