使用MySql Regex从URL中提取Amazon ASIN

时间:2016-01-19 10:41:33

标签: mysql sql regex select

SELECT 
  id, 
  url, 
  url REGEXP '/([A-Z0-9]{10})' as asin 
FROM urls;

我正在尝试提取亚马逊网址的ASIN部分。

我的查询只返回1表示匹配,0表示不匹配。如何在不必在应用程序级别运行正则表达式的情况下使用mysql(DB级别)实际提取此内容?

1 个答案:

答案 0 :(得分:-1)

MySQL的正则表达式可以找到行,但不能提取匹配的文本。

这可能适用于该示例:

SUBSTRING_INDEX(url, '/', -1)

示例:

mysql> SELECT SUBSTRING_INDEX('amazon.co.uk/gp/product/B00BE4HOIM', '/', -1);
+----------------------------------------------------------------+
| SUBSTRING_INDEX('amazon.co.uk/gp/product/B00BE4HOIM', '/', -1) |
+----------------------------------------------------------------+
| B00BE4HOIM                                                     |
+----------------------------------------------------------------+

假定 ASIN之后没有任何。如果可能的话,那么第二步可能会剥夺那些东西。