2

MySqlデータベースのテーブル「test」にフィールド「url」があり、次のようなクエリ文字列を持つURLが含まれています

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

テーブルにクエリ値を格納するために「query_q」と「query_p」の 2 つのフィールドを作成しましたが、「url」フィールドから各クエリ文字列値を抽出して新しいフィールドに保存する SQL を作成できますか?

4

2 に答える 2

3

バーマーが言ったようLOCATE()に、 andを使用できます。SUBSTR()

SQL フィドルを参照してください。

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 が最初のパラメーターである必要があり、その前に「?」が続きます。2 番目は 'p' です。しかし、そうでない場合は、それを理解することができます;)

于 2013-03-13T17:48:52.433 に答える
0

迅速で汚い解決策が必要な場合は、これが役立つ場合があります。

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

ここでフィドルを参照してください。

于 2013-03-13T17:49:40.620 に答える