【问题标题】:how to extract querystring values from an URL string stored in MySql and save them in new fields?如何从存储在 MySql 中的 URL 字符串中提取查询字符串值并将它们保存在新字段中?
【发布时间】:2013-03-01 19:25:13
【问题描述】:

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

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

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

【问题讨论】:

  • 你试过什么?您应该能够使用LOCATE()SUBSTR() 提取这些片段。
  • 如果可能,捕获 q 和 p 然后将它们与 URL 同时插入数据库会更有效。
  • 我知道,但我必须将其作为后期处理

标签: mysql sql database field text-extraction


【解决方案1】:

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

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

请看小提琴here

【讨论】:

    【解决方案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”。但如果没有,你可以弄清楚;)

    【讨论】:

      猜你喜欢
      • 2014-09-13
      • 2018-01-01
      • 1970-01-01
      • 2011-08-30
      • 1970-01-01
      • 2011-09-03
      • 2020-12-08
      • 2017-02-23
      • 2015-05-07
      相关资源
      最近更新 更多