首页 > 解决方案 > 在两个特定字符之间取数字

问题描述

我有一个如下链接

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

有没有一种方法可以将这两者结合在一个查询中以仅提取数字。

十分感谢。

标签: mysql

解决方案


你可以用这样的查询来做到这一点:

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)]> 

推荐阅读