我有如下链接
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
有没有一种方法可以将这两个查询合并到一个查询中呢?
非常感谢您。
答案 0 :(得分:2)
您可以使用以下查询来做到这一点:
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)]>
答案 1 :(得分:0)
我的建议是使用正则表达式
https://dev.mysql.com/doc/refman/8.0/en/regexp.html
类似mysql> SELECT REGEXP_SUBSTR('internal_id', '(.*)\d*\(.html)');
(。)\ d .html
答案 2 :(得分:0)
您可以使用MySql转换技巧:
https://www.db-fiddle.com/f/oC7zRWks24b4QCS4B3RoA1/0
SELECT RIGHT(`internal_id`,LOCATE('p',reverse(`internal_id`)) - 1)+0
FROM pricing_dm