使用PLSQL对字符串进行排序

1.建Function程序

CREATE OR REPLACE FUNCTION sort_string(p_string IN VARCHAR2) RETURN VARCHAR2 IS
  TYPE typ_rec IS RECORD(
    letter VARCHAR2(256), --记录字母
    seq    PLS_INTEGER --记录字母出现次数
    );

  TYPE tab_rec IS TABLE OF typ_rec INDEX BY BINARY_INTEGER;
  tabr     tab_rec;
  l_result VARCHAR2(32767);
BEGIN
  FOR i IN 1 .. length(p_string) LOOP
    tabr(ascii(substr(p_string, i, 1))).letter := substr(p_string,
                                                         i,
                                                         1);
    tabr(ascii(substr(p_string, i, 1))).seq := nvl(tabr(ascii(substr(p_string, i, 1))).seq,
                                                   0) + 1;
  END LOOP;

  FOR i IN tabr.first .. tabr.last LOOP
    IF tabr.exists(i) THEN
      l_result := l_result || rpad(tabr(i).letter,
                                   tabr(i).seq,
                                   tabr(i).letter);
    END IF;
  END LOOP;

  RETURN l_result;
END;

2.用法

例子1:
SQL> SELECT sort_string ('43258888') FROM DUAL;
 
SORT_STRING('43258888')
--------------------------------------------------------------------------------
23458888
例子2:
SQL> SELECT sort_string ('klaktkky') FROM DUAL;
 
SORT_STRING('KLAKTKKY')
--------------------------------------------------------------------------------
akkkklty

文本地址:http://blog.csdn.net/sunansheng/article/details/46331485

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值