如何从存储在MySql中的URL字符串中提取查询字符串值并将其保存在新字段中?

时间:2013-03-13 17:35:52

标签: mysql sql database field text-extraction

我在MySql数据库的“test”表中有一个字段“url”,其中包含一个带有查询字符串的URL,如

http://www.mydomain.com?q=xxxx&p=yyyy

我创建了两个字段“query_q”和“query_p”来将查询值存储在表中,但是我可以创建一个SQL来从“url”字段中提取每个查询字符串值并将它们保存在新字段中吗?

2 个答案:

答案 0 :(得分:2)

您可以使用LOCATE()SUBSTR(),因为Barmar说:

请参阅SQL Fiddle

update t1 set 
q=substr(url, locate('?q=',url)+3, locate('&p=',url)-locate('?q=',url)-3),
p=substr(url, locate('&p=',url)+3, length(url)-locate('&p=',url)-2);

当然,要实现这一点,q必须是第一个参数,前面加上'?'并且'p'是第二个。但如果没有,你可以搞清楚;)

答案 1 :(得分:0)

如果你只需要一个快速的&肮脏的解决方案,这可能会有所帮助:

UPDATE urls
SET
  query_q = SUBSTRING_INDEX(SUBSTRING_INDEX(url, '?q=', -1), '&p=', 1),
  query_p = SUBSTRING_INDEX(url, '&p=', -1)

请参阅小提琴here