我在MySql数据库的“test”表中有一个字段“url”,其中包含一个带有查询字符串的URL,如
http://www.mydomain.com?q=xxxx&p=yyyy
我创建了两个字段“query_q”和“query_p”来将查询值存储在表中,但是我可以创建一个SQL来从“url”字段中提取每个查询字符串值并将它们保存在新字段中吗?
答案 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。