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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
获取数据库字符串最大值
CREATE OR REPLACE FUNCTION GETNUMBER(STR IN VARCHAR2) RETURN VARCHAR2 IS   V_TEMP   VARCHAR2(200);   V_RETURN VARCHAR2(200);   IDX      NUMBER := 1; BEGIN   WHILE (IDX      V_TEMP :=
mysql中获取varchar类型数据的最大值
select MAX(CAST(userNo as SIGNED INTEGER)) from userInfo ; 或者 select MAX(CAST(userNo as UNSIGNED INTEGER)) from userInfo ; ————varchar 转 int  cast(id as signed integer)  或者 cast(id a
mysql 获取varchar类型数字最大值
SELECT MAX(CAST(no AS SIGNED)) FROM sys_user ;
mysql 从字段中截取数字,并求截取数字的最大值
IFNULL(max(substr(u.name, CHAR_LENGTH(u.introduce)+2)), -1)+1
mysql常用sql总结_获取多个字段最大值最小值
greatest(字段1,字段2,字段3,..,字段n)  取最大值  least(字段1,字段2,字段3,...,字段n)   取最小值 示例: SELECT GREATEST(2,3,4);   结果:4 SELECT LEAST(2,3,4);   结果:2 SELECT GREATEST(DATE('2016-05-02'), DATE('2015-05-02'), DATE
MySQL-----MySQL中max函数查询最大值问题
MySQL中max函数查询最大值问题
mysql 数据类型 (最大值 和 最小值)
1、整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节  范围(-128~127) smallint(m) 2个字节  范围(-32768~32767) mediumint(m) 3个字节  范围(-8388608~8388607) int(m) 4个字节  范围(-2147483648~21474836
Mysql查询某数值条件附近最大值或者最小值
项目中需要每次查询一个表中的最新的一条记录,表结构里面有日期字段。只需要显示一条记录。 Mysql帮助文档里面的解释 3.6.2. 拥有某个列的最大值的行 任务:找出最贵物品的编号、销售商和价格。 这很容易用一个子查询做到: SELECT article, dealer, price FROM   shop WHERE  price=(SELECT MAX(p
[每天学习一点点] Mysql获取varchar字段类型最大值
需求:获取varchar字段类型最大值 SELECT ifnull(max(CAST(字段 AS signed)),0)  from 表名 用了三个函数通过三种颜色来区分 cast 函数转换成int类型(我用了as int但是提示我不对) max 函数获取最大 ifnull 用来保证正确性
MySQL字符串中抽取数值的方法
MySQL的字符串函数非常多,以至于有时候我不知道该如何灵活的使用这些函数。字符串基本信息函数     collation  convert,char_length等加密函数   password(x),encode,  aes_encrypt字符串连接函数   concat(x1,x2,….)修剪函数  trim,ltrim,rtrim子字符串操作函数 substring(x,start,len...