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

问题描述

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

时间: 2024-07-28 14:42:48

数据库-mysql 获取字符串多个数值中的最大值的相关文章

mysql获取字符串长度函数(CHAR_LENGTH)_Mysql

length:   是计算字段的长度一个汉字是算三个字符,一个数字或字母算一个字符CHAR_LENGTH(str) 返回值为字符串str 的长度,长度的单位为字符.一个多字节字符算作一个单字符.对于一个包含五个二字节字符集, LENGTH()返回值为 10,而CHAR_LENGTH()的返回值为5.CHARACTER_LENGTH(str) CHARACTER_LENGTH()是CHAR_LENGTH()的同义词.BIT_LENGTH(str) 返回2进制长度.例如:可以查出用户名长度少于6个字

mysql获取字符串长度函数(CHAR_LENGTH)

length:   是计算字段的长度一个汉字是算三个字符,一个数字或字母算一个字符 CHAR_LENGTH(str) 返回值为字符串str 的长度,长度的单位为字符.一个多字节字符算作一个单字符.对于一个包含五个二字节字符集, LENGTH()返回值为 10,而CHAR_LENGTH()的返回值为5. CHARACTER_LENGTH(str) CHARACTER_LENGTH()是CHAR_LENGTH()的同义词. BIT_LENGTH(str) 返回2进制长度. 例如:可以查出用户名长度少

MySQL关于字符串中数字排序的问题分析_Mysql

本文实例讲述了MySQL关于字符串中数字排序的问题.分享给大家供大家参考,具体如下: MySQL字符串相信大家都不陌生,在MySQL字符串排序时经常会遇到一些问题,比如下面要介绍的这个 今天解决了一个关于MySQL字符串排序的很奇怪的问题,在数据里面定义的是varchar类型,实际存放的是Int类型的数据,按一下查询语句进行排序: 将字段*1或者+0可以将MySQL字符串字段按数值排序 如: select * from table where 1 order by id*1 desc; 或者 s

php结合正则获取字符串中数字

  这篇文章主要给大家汇总介绍了php结合正则获取字符串中数字的几种方法,十分的简单实用,有需要的小伙伴可以参考下. php结合正则获取字符串中数字 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 <?php $patterns = "/d+/"; //第一种 //$patterns = "/d/"; //第二种 $st

asp 获取字符串中url地址函数

asp教程 获取字符串中url地址函数 本文章提供了三款利用asp的正则获取字符串中url地址自定义函数哦,三个方法的实现原理都是获取以http开的url地址哦. on error goto z dim url,key,wwwname url=request.servervariables("server_name") if instr(url,".")>0 then key=split(url,".") wwwname=key(0) ww

JS正则表达式获取字符串中特定字符的方法

 这篇文章主要介绍了JS正则表达式获取字符串中得特定字符,通过replace的回调函数获取,需要的朋友可以参考下 实现的效果:在字符串中abcdefgname='test'sddfhskshjsfsjdfps中获取name的值test    实现的机制:通过replace的回调函数获取.    代码:  代码如下: var str = "abcdefgname='test'sddfhskshjsfsjdfps";  var reg = /name='((w|-|s)+)/ig;  st

获取字符串中某一个字段的数据,GetValueFromStr;拓展字符串解析parse_string

gps数据格式为:$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,,,A* /********************************************************************** *版权所有 (C)2015, Wuyq. * *文件名称: GetValueFromStr.c *内容摘要:用于演示从gps数据字符串中获取相应的内容 *其它说明:无 *当前版本: V1.0 *作

关于SQL表中的[LEVEL]以及怎样用DATATABLE获取标识列的数值?

问题描述 关于SQL表中的[LEVEL]以及怎样用DATATABLE获取标识列的数值? 用SQL2014的时候我是想设置一列名为level,表达的意思就是标记表中一行字段的身份级别,但是按ENTER以后, level两边就多了中括号,变成了[level],而且也不能用DATATABLE获取了. 同样的问题,在表中如果有一列为标识列,例如名为ID(会随着表中数据的增加,自动增加数值), 同样,用DATATABLE获取该表中ID的值的时候也会提示错误信息,错误信息为"列'ID'不属于表".

Golang strings.Split获取字符串中的url/域名的简易方法

package main import ( "fmt" "strings" ) func main() { fmt.Println("Hello World!") a := "golang strings.Split获取字符串中的url/域名的简易方法http://www.waylau.com/golang-strings-split-get-url/" a1 := strings.Split(a, "//"