问题描述
- mysql 获取字符串多个数值中的最大值
- 如数据
YJV-3*50+1*25 取最大值50
JKLGYJ-1-120/20 取最大值120
YJV-4*70+1*35 取最大值70
利用数据库自带函数或自己建立函数或其它方法实现都可以
望大家多多帮助
解决方案
用正则
http://stackoverflow.com/questions/5361457/mysql-return-matching-pattern-in-regexp-query
提取出了数据,再排序
解决方案二:
非常感谢@caozhy 帮助,根据你提供的链接,已经搞定,3Q;
下面为我写出的方法,供大家参阅;水平有限,勿喷。
-- 取字符串中的多个数值(只可以是整型数值),获取最大值
CREATE DEFINER=root
@localhost
FUNCTION FindMaxNumber
(_input VARCHAR(64)) RETURNS INTEGER
BEGIN
DECLARE _r VARCHAR(32) DEFAULT '';
DECLARE _i INTEGER DEFAULT 1;
DECLARE _t BOOLEAN DEFAULT TRUE;
DECLARE _start INTEGER DEFAULT 0;
DECLARE _IsCharNumeric BOOLEAN;
DECLARE _maxnum INTEGER DEFAULT 0;
DECLARE _num INTEGER DEFAULT 0;
WHILE _i < length(_input) DO
_loop: REPEAT
SET _IsCharNumeric = locate(mid(_input _i 1)0123456789"") > 0;
IF _IsCharNumeric THEN
IF _t THEN
SET _t = FALSE;
SET _start = _i;
END IF;
ELSE
IF _start > 0 THEN LEAVE _loop; END IF;
END IF;
SET _i = _i + 1;
UNTIL _i > length(_input) END REPEAT;
IF _start > 0 AND NOT _t THEN SET _t = TRUE; SET _r = mid(_input _start _i - _start); SET _num = convert(_rSIGNED); SET _maxnum = greatest(_maxnum_num); END IF; SET _i = _i+1;
END WHILE;
RETURN _maxnum;
END