mysq对字符型字段中的数字进行排序

场景:

按楼栋名称进行排序

比如有一套楼栋数据如下:



直接对楼栋名称进行order by是没有效果的,因为目标字段是字符型



思路:

获取楼栋名称中的数字,对数字进行排序


解决方案:

创建mysql函数 GetNum(field)

DELIMITER $$

CREATE FUNCTION GetNum (Varstring varchar(50))
RETURNS varchar(30)
BEGIN
DECLARE v_length INT DEFAULT 0;
DECLARE v_Tmp varchar(50) default '';
set v_length=CHAR_LENGTH(Varstring);
WHILE v_length > 0 DO
IF (ASCII(mid(Varstring,v_length,1))>47 and ASCII(mid(Varstring,v_length,1))<58 )   THEN
set v_Tmp=concat(v_Tmp,mid(Varstring,v_length,1));
END IF;
SET v_length = v_length - 1;
END WHILE;
RETURN REVERSE(v_Tmp);
END$$

DELIMITER ;

调用 GetNum(field) 函数,并没有实现按数字排序


原因是因为GetNum(field)得到的结果也是字符型,所以要对目标字段+0实现排序







猜你喜欢

转载自blog.csdn.net/github_39325328/article/details/79746103
今日推荐