/* 判断字符串里的内容是否是数值类型 ****************************************************

is_double

输入参数:

str:            待分析的字符串

返回:                如果是数值类型就返回1,否则返回0

*/

DELIMITER $$

DROP FUNCTION IF EXISTS is_double$$

CREATE FUNCTION is_double(str VARCHAR(128))

RETURNS INT

BEGIN

DECLARE iResult INT DEFAULT 0;

/*NULL字符串或者空字符串*/

IF str IS NULL OR str = ''THEN

RETURN 0;

END IF;

SELECT str REGEXP '^[[:digit:]]+$|^[[:digit:]]+[\\.][[:digit:]]+$' INTO iResult;

IF iResult = 1 THEN

RETURN 1;

ELSE

RETURN 0;

END IF;

END $$

DELIMITER ;

/* 分割字符串 ****************************************************

sp_report_string_get_val

功能:分割特定格式的字符串:'3.4,3.2,3.0,2.6,1.0',忽略空值或者是不合法的值

限制:以逗号分割,分割单元以数字组成

结果:分割之后 字符串变为'3.2,3.0,2.6,1.0'和3.4

输入输出参数:

prstring:        要分割的字符串

输出参数:

rval:            从字符串中取得的数值

rcode:            返回代码:0:表示成功执行;1:表示没有取到值或者取到的不是数值

*/

DROP PROCEDURE IF EXISTS sp_get_val;

CREATE PROCEDURE sp_get_val(

INOUT    prstring    VARCHAR(128),

OUT        rval        DOUBLE,

OUT        rcode        INT UNSIGNED

)

BEGIN

DECLARE _pos    INT UNSIGNED DEFAULT 1;        /*','的位置*/

DECLARE _str    VARCHAR(128) DEFAULT '';    /*存放取出的字符串,之后将值赋给返回变量*/

SET rval = NULL;

SET rcode = 0;

/*

1)先去除空格

*/

SET prstring = REPLACE(prstring, ' ', '');

IF prstring = '' THEN

SET rcode = 1;

ELSE

IF RIGHT(prstring, 1) != ',' THEN

SET prstring = CONCAT(prstring, ',');

END IF;

/*

2)找到第一个','

*/

WHILE rval IS NULL AND prstring != '' DO

SET _pos = LOCATE(',', prstring);

IF _pos = 0 THEN

SET rcode = 1;

ELSE

SET _str = SUBSTRING(prstring, 1, _pos - 1);

IF is_double(_str) THEN

SET rval = _str;

END IF;

SET prstring = SUBSTRING(prstring, _pos + 1);

END IF;

END WHILE;

END IF;

IF rval IS NULL THEN

SET rcode = 1;

END IF;

END;

测试:

CREATE TABLE test_1(a DOUBLE);

DELIMITER $$

DROP PROCEDURE IF EXISTS sp_test_3$$

CREATE PROCEDURE sp_test_3()

BEGIN

DECLARE _str    VARCHAR(128) DEFAULT '1,4,3.5,3.7,3.22a, , a, 34.2, 0, .1, 0., ';

DECLARE _i        DOUBLE DEFAULT 0;

DECLARE _j        INT UNSIGNED DEFAULT 0;

WHILE _str != '' DO

CALL sp_get_val(_str, _i, _j);

IF _j = 0 THEN

INSERT INTO test_1 VALUES(_i);

END IF;

END WHILE;

END$$

DELIMITER ;

执行:

CALL sp_test_3(); SELECT * FROM test_1; TRUNCATE test_1;

mysql正则提取字符串_mysql字符串查找截取与正则表达式的联合应用相关推荐

  1. mysql 正则截取字符串_mysql字符串查找截取与正则表达式的联合应用 | 学步园

    /* 判断字符串里的内容是否是数值类型 **************************************************** is_double 输入参数: str:       ...

  2. linux sed 正则提取字符串,Shell中使用grep、sed正则提取和替换字符串

    Linux中使用grep正则提取字符串 echo office365 | grep -P '\d+' -o find . -name "*.txt" | xargs grep -P ...

  3. mysql中如何操作字符串_mysql 字符串操作

    1.LOWER(column|str):将字符串参数值转换为全小写字母后返回 mysql> select lower('SQL Course'); +---------------------+ ...

  4. c mysql 包含字符串_Mysql字符串字段判断是否包含某个字符串的2种方法

    假设有个表: 复制代码 代码如下:CREATE TABLE users(id int(6) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id),user_name VAR ...

  5. c 配置mysql字符串_mysql字符串属性实例学习

    在mysql数据库中: 二进制字符串的比较是通过逐个字节的比较字节数值来进行的. 二进制字符串不和字符集相关联. 非二进制字符串是一个Collation列,他存放包含特定字符集和Collation的文 ...

  6. linux替换字符串 正则,Linux Shell使用grep、sed 常用正则提取、替换字符串方法

    grep常用于文本搜索.通过自定义的模式(pattern),筛选出使用者需要的文本内容.除了有grep,还有egrep和fgrep.其中egrep = grep –E,而fgrep则是不支持正则表达式 ...

  7. mysql 字段最右匹配_Mysql字符串处理函数详细介绍、总结 -电脑资料

    一.简明总结 ASCII(char) 返回字符的ASCII码值 BIT_LENGTH(str) 返回字符串的比特长度 CONCAT(s1,s2-,sn) 将s1,s2-,sn连接成字符串 CONCAT ...

  8. mysql函数第一次返回字符串_Mysql字符串处理函数详细介绍、总结

    一.简明总结 ASCII(char) 返回字符的ASCII码值 BIT_LENGTH(str) 返回字符串的比特长度 CONCAT(s1,s2-,sn)   将s1,sn连接成字符串 CONCAT_W ...

  9. mysql 格式化函数总结_Mysql字符串处理函数详细介绍、总结

    一.简明总结 ASCII(char) 返回字符的ASCII码值 BIT_LENGTH(str) 返回字符串的比特长度 CONCAT(s1,s2-,sn)   将s1,s2-,sn连接成字符串 CONC ...

最新文章

  1. tableau2020.2版本可视化数据分析 新功能介绍
  2. php获取访问者ip地址汇总,php获取访问者IP地址汇总_PHP
  3. C/C++:Winsock网络编程—ping命令的简单实现
  4. Struts2之数据标签(一)
  5. 极客大学架构师训练营 听课总结 - 架构视图,设计文档 -- 第二课
  6. 全球异常高温:虾熟了我也要“熟”了
  7. matlab无法打开wps的xls文件,WPS无法打开XLS文件怎么办 XLS文件出现异常无法打开怎么处理...
  8. 登录提示:You are required to change your password immediately (password aged)
  9. 宽带技术大比拼(转)
  10. 共享服务器打不开文件csc,csc.exe 无法执行程序的异常
  11. 微软实习面试经历-2018
  12. python如何识别特殊字符_python正则表达式--特殊字符
  13. 高斯旋转热源与双椭球热源_专题文章2.在Marc和abaqus中进行激光焊接仿真的模拟...
  14. (图文详细)win 10禁用F1到F12热键/win10 把F1到F12多媒体键转变为功能键
  15. video 视屏播放器详细控制
  16. PCL_Implicit Shape Model_隐式形状模型 ISM
  17. APP开发还是应以服务为主
  18. 为什么程序员工位上总会摆着小黄鸭?
  19. WPS应用之下拉列表 和 多级下拉列表联动
  20. MySQL存储引擎与数据的关系_MySQL存储引擎与数据类型

热门文章

  1. cadshx字体怎么安装_福利 | 关于PPT字体,你应该知道的几件事...字体包福利见文末...
  2. python秒杀神器苏宁_Python爬虫——实战三:爬取苏宁易购的商品价格
  3. cmake / cmake --build 如何理解
  4. 编码 / Base 64
  5. OS / Linux / epoll 各种事件解析
  6. 虚拟机上怎么配置mysql数据库_Linux虚拟机下安装配置MySQL
  7. kafka reassign 限速_RabbitMQ 与 Kafka 的技术差异以及使用注意点
  8. jpa关联映射(一)
  9. Pl/sql 如何将oracle的表数据导出成excel文件?
  10. iOS - app 进行安全加固