例如:数据库中有一个字段----楼号它是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 楼号的时候调用一下这个函数就能实现按照数字的大小进行排序了。