MySqlデータベースのテーブル「test」にフィールド「url」があり、次のようなクエリ文字列を持つURLが含まれています
http://www.mydomain.com?q=xxxx&p=yyyy
テーブルにクエリ値を格納するために「query_q」と「query_p」の 2 つのフィールドを作成しましたが、「url」フィールドから各クエリ文字列値を抽出して新しいフィールドに保存する SQL を作成できますか?
MySqlデータベースのテーブル「test」にフィールド「url」があり、次のようなクエリ文字列を持つURLが含まれています
http://www.mydomain.com?q=xxxx&p=yyyy
テーブルにクエリ値を格納するために「query_q」と「query_p」の 2 つのフィールドを作成しましたが、「url」フィールドから各クエリ文字列値を抽出して新しいフィールドに保存する SQL を作成できますか?
バーマーが言ったよう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' です。しかし、そうでない場合は、それを理解することができます;)
迅速で汚い解決策が必要な場合は、これが役立つ場合があります。
UPDATE urls
SET
query_q = SUBSTRING_INDEX(SUBSTRING_INDEX(url, '?q=', -1), '&p=', 1),
query_p = SUBSTRING_INDEX(url, '&p=', -1)
ここでフィドルを参照してください。