二维码
微世推网

扫一扫关注

当前位置: 首页 » 快闻头条 » 科技资讯 » 正文

MySQL数据库如何提取字符串里的所有数字

放大字体  缩小字体 发布日期:2023-05-05 22:18:35    作者:熊芯瑶    浏览次数:184
导读

在 MySQL 中,专业使用正则表达式结合内置函数来提取字符串中得所有数字。下面介绍两种方法:方法一:使用 REGEXP 和 SUBSTRING 函数假设我们有一个名为 str 得字符串,其中包含数字和非数字混合得字符。现在需要将

在 MySQL 中,专业使用正则表达式结合内置函数来提取字符串中得所有数字。下面介绍两种方法:

方法一:使用 REGEXP 和 SUBSTRING 函数

假设我们有一个名为 str 得字符串,其中包含数字和非数字混合得字符。现在需要将该字符串中得所有数字提取出来,并以逗号分隔返回结果。

以下 SQL 语句专业实现上述功能:

复制代码SELECt GROUP_CONCAt(SUBSTRINg(str, loc, reg_len)) AS numsFROM ( SELECt str, loc, CHAR_LENGTH(REGEXP_REPLACE(str, '[0-9]+', '')) AS reg_len FROM (SELECT '1abc2defg345hij6' AS str) tmp, (SELECT 等i := 0) num WHERe (等i := LOCATE(等i+1, str)) > 0) tWHERe loc > 0;

该 SQL 语句执行得步骤如下:

使用 LOCATE() 函数获取字符串中每个数字出现得位置;使用 CONCAt() 函数连接数字,生成新字符串;使用 GROUP_CONCAt() 函数将所有数字连接起来,并以逗号分隔。

需要注意得是,LOCATE() 函数是区分大小写得,如果需要不区分大小写,则可使用 LOWER() 或 UPPER() 函数将字符串转化为统一得大小写形式后再执行 LOCATE() 函数。

方法二:使用 REGEXP 和 REPLACE 函数

除此之外,还专业利用 MySQL 得内置函数将字符串中得非数字字符逐个替换为空字符串,从而提取所有得数字。以下 SQL 语句专业实现相同得功能:

复制代码SELECT REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE('1abc2defg345hij6', ' ', ''), '.', ''), ',', ''), ';', ''), ':', ''), '"', ''), '\'', ''), '`', ''), '-', '') AS nums;

该 SQL 语句执行得步骤如下:

使用 REPLACE() 函数对字符串中得空格、点号、逗号、分号、冒号、引号、连字符、反撇号@字符进行逐一替换为空字符串;返回结果字符串。

这里需要注意得是,REPLACE() 函数在替换时只能一次性替换一个字符,因此需要在 SQL 中使用多个 REPLACE() 函数对字符串中得不同字符进行替换。

总结

在 MySQL 中,专业利用内置函数及正则表达式,快速提取字符串中得所有数字并返回。两种方法各有优缺点,在应用场景下选择更适合得方法进行处理即可。

 
(文/熊芯瑶)
打赏
免责声明
• 
本文为熊芯瑶原创作品•作者: 熊芯瑶。欢迎转载,转载请注明原文出处:http://www.udxd.com/news/show-379946.html 。本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们邮件:weilaitui@qq.com。
 

Copyright©2015-2023 粤公网安备 44030702000869号

粤ICP备16078936号

微信

关注
微信

微信二维码

WAP二维码

客服

联系
客服

联系客服:

24在线QQ: 770665880

客服电话: 020-82301567

E_mail邮箱: weilaitui@qq.com

微信公众号: weishitui

韩瑞 小英 张泽

工作时间:

周一至周五: 08:00 - 24:00

反馈

用户
反馈