实现按数字字符排序

例如:数据库中有一个字段----楼号它是varchar2类型的,大部分情况下里面存的是数字,由于需要满足各种需要,所以把这个字段设置为varchar2类型的,但是在查询列表中需要能按照楼号进行排序,大家都知道字符排序是比较它们的首个字符,也就是:1,11,12,2,21......这样的排序,很显然不满足需要,我们需要能按照数字的大小进行排序,于是需要在order by的时候对这个字段做些处理,下面是处理函数:

Oracle>

       create or replace function CHAR_TO_NUMBER(num in VARCHAR2) return number is
         begin
            return to_number(num);
            exception
                when others then 
            return null;
      end CHAR_TO_NUMBER;

 

mysql>

      DELIMITER $$

      DROP FUNCTION IF EXISTS `hqgr`.`char_to_number` $$
      CREATE DEFINER=`root`@`localhost` FUNCTION `char_to_number`(num VARCHAR(20)) RETURNS int(11)
          BEGIN
                declare exit handler for sqlexception begin end;
                return cast(num as SIGNED INTEGER);

          END $$

      DELIMITER ;

只要在order by 楼号的时候调用一下这个函数就能实现按照数字的大小进行排序了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值