https://blog.csdn.net/github_39325328/article/details/79746103
场景:
按楼栋名称进行排序
比如有一套楼栋数据如下:
直接对楼栋名称进行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转化为int类型实现排序
————————————————
版权声明:本文为CSDN博主「github_39325328」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/github_39325328/article/details/79746103