mysql - 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 版本,所以我也不能使用它。
有什么建议么?
谢谢!
解决方案
在不使用 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 上查看
推荐阅读
- go - 您如何为 golang 项目的 RPM 规范创建构建部分?
- javascript - 如何进行单元测试并检查函数是否在 Jest 中调用预期的 firebase 方法?
- linux - Docker:创建 aufs 挂载时出错,尽管 Ubuntu 19.01 可启动 USB 支持 aufs
- android - Android蓝牙应用程序将手机连接到智能扬声器全双工?
- windows - GetSystemIdForPublisher 不返回唯一 ID
- java - 使用复合键映射/访问实体
- r - 在 R 中生成满足约束的随机数
- python - Tkinter,创建带有滚动条的框架,以接收 arduino 串行
- python - 我有一个 3D numpy 数组。我想将它的切片变平,然后将其转回相同的 3D 阵列。我该怎么做?(python)
- javascript - 如何获取和存储选定的几何功能以在我的 Azure Maps 应用程序的其他功能中使用