mysql - 在两个特定字符之间取数字
问题描述
我有一个如下链接
https://www.example.com/xy-pz-p123456789.html
从此链接中,我想使用 mysql 查询提取数字“123456789”。
我有以下查询来提取最后一个 -p 之后的所有内容
SELECT id, RIGHT(`internal_id`,LOCATE('p',reverse(`internal_id`)) - 1) from pricing_dm where `id` = 1
查询返回:123456789.html
我有以下查询来获取“.html”的所有内容
SELECT id, left(`internal_id`,LOCATE('.html',`internal_id`) - 1) from pricing_dm where `id` = 1
查询返回https://www.example.com/xy-pz-p123456789
有没有一种方法可以将这两者结合在一个查询中以仅提取数字。
十分感谢。
解决方案
你可以用这样的查询来做到这一点:
SELECT SUBSTRING_INDEX(
SUBSTRING_INDEX('https://www.example.com/xy-pz-p123456789.html', '-p', -1), '.' ,1);
样本
MariaDB [(none)]> SELECT SUBSTRING_INDEX(
-> SUBSTRING_INDEX('https://www.example.com/xy-pz-p123456789.html', '-p', -1), '.' ,1);
+-------------------------------------------------------------------------------------------------------+
| SUBSTRING_INDEX(
SUBSTRING_INDEX('https://www.example.com/xy-pz-p123456789.html', '-p', -1), '.' ,1) |
+-------------------------------------------------------------------------------------------------------+
| 123456789 |
+-------------------------------------------------------------------------------------------------------+
1 row in set (0.000 sec)
MariaDB [(none)]>
推荐阅读
- json - 在相同的python代码中解析具有可变键值对的不同json文件
- r - 根据多个条件在数据框中插入行
- amazon-web-services - 如何在 AWS API Gateway 中传递“LastEvaluatedKey”?
- unreal-engine4 - 客户端中的 UE4 复制变量未反映在服务器上
- facebook - Facebook PSID/ASID 匹配
- spring - @EnableBinding @deprecated 自 3.1 起支持函数式编程模型
- python - 我们如何将 CSV 数据从 CPP 发送到 python 脚本
- python - 在 Python 中编写带参数的装饰器
- android - 是什么让代码中不同的权限请求位置改变了 android 应用程序的行为
- sql - 将公式应用于列时使用 CASE 的 sql 查询出错