首页 > 解决方案 > MySQL获取两个字符串之间的整数值

问题描述

我正在尝试获取两个特定字符串之间的整数值,但我有点堆叠。

完整字符串示例:

“真正的 ABC4_ 字符串可能是公司机密。”

我需要在“ ABC ”和“ _ ”之间得到“4 ”。首先,我想出了以下脚本:

select substring_index(substring_index('The real ABC4_ string is probably company secret.', 'ABC', -1),'_', 1);

它给了我4,完美!但问题是如果 ABC 在字符串中出现不止一次,它就会失败。我也不能简单地增加计数器,因为我不知道将来会增加多少次。我必须第一次出现那个正则表达式:ABC[DIGIT]_

我见过 REGEXP_SUBSTR 函数,但因为我们使用比 8.0 更旧的 MySQL 版本,所以我也不能使用它。

有什么建议么?

谢谢!

标签: mysqlregex

解决方案


在不使用 Regex 的情况下,这是一种使用LOCATE(), 和其他字符串函数的方法:

SET @input_string = 'The real ABC4_ string is probably company secret.';

SELECT TRIM(LEADING 'ABC' 
              FROM SUBSTRING_INDEX(
                     SUBSTR(@input_string FROM 
                       LOCATE('ABC', @input_string)
                           )
                     ,'_', 1
                     )
           ) AS number_extracted;

| number_extracted |
| ---------------- |
| 4                |

在 DB Fiddle 上查看


推荐阅读