2 vcxiaohei VCXIAOHEI 于 2016.01.23 19:32 提问

mysql 获取字符串多个数值中的最大值

如数据
YJV-3*50+1*25 取最大值50
JKLGYJ-1-120/20 取最大值120
YJV-4*70+1*35 取最大值70
利用数据库自带函数或自己建立函数或其它方法实现都可以
望大家多多帮助

2个回答

caozhy
caozhy   Ds   Rxr 2016.01.23 20:47
已采纳
VCXIAOHEI
VCXIAOHEI   2016.01.24 17:39

非常感谢@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(_r,SIGNED);
    SET _maxnum = greatest(_maxnum,_num);
  END IF;
  SET _i = _i+1; 

END WHILE;
RETURN _maxnum;
END

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!