2013-03-13 58 views
1

我在MySQL數據庫中的表「測試」,包含與查詢字符串的URL像如何從存儲在MySql中的URL字符串中提取查詢字符串值並將它們保存到新字段中?

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

我已經創建了兩個字段的字段「URL」「QUERY_Q」和「query_p」來存儲表中的查詢值,但是我可以創建一個SQL從「url」字段中提取每個查詢字符串值並將它們保存在新字段中?

+0

你試過了什麼?你應該能夠使用'LOCATE()'和'SUBSTR()'來提取這些片段。 – Barmar 2013-03-13 17:39:56

+0

如果可能的話,捕獲q和p會更有效,然後將它們與URL同時插入到數據庫中。 – nickhar 2013-03-13 17:41:17

+0

我知道,但我必須做它後處理 – Max 2013-03-13 17:42:17

回答

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'是第二個。但是,如果沒有,你自己看着辦吧;)

+0

SQL小提琴很好! – Max 2013-03-13 18:14:48

0

如果你只是需要一個快速&骯髒的解決方案,這可能幫助:

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

請參閱小提琴here

相關問題