-2

テーブルがcallInfoあり、次のようになります。

+----+------------------------------------------------------------------------------------------------------------------------------------+
| id | idUrl                                                                                                               | collectionId |                                                                                              |
+----+------------------------------------------------------------------------------------------------------------------------------------+
|  1 | id?books.0.levelOfDetail=high&books.0.shopId=727&books.0.type=books&collectionId=20092014&type=seasonPassSource     |          |
|  2 | id:call3?books.0.levelOfDetail=high&books.0.shopId=123&books.0.type=books&collectionId=16645&type=seasonPassSource  |          |
|  3 | id:call3?maxDepth=1&parentMixId=777&type=mixSource                                                                  |          |
|  4 | idSet:call3?keyword=%22FOO%20BAR%20.%5E%24*%2B%3F%7C%28%29%7B%7D%5B%5D%22&type=wishListSource                       |          |
|  5 | idSet:call3?books.0.levelOfDetail=high&books.0.shopId=727                                                           |          |
|  6 | idSetSource.0.booksNumber=2&collectionId=16645&books.0.levelOfDetail=high&books.0.type=books&type=seasonPassSource  |          |
|  7 | idSet:call3?keyword=hero&type=wishListSource                                                                        |          |
+----+-------------------------+----------------------------------------------------------------------------------------------------------+

collectionIdtableという名前の新しい列を作成しましたcallInfoが、この列の値を更新する必要があるテーブル内のレコードが多数あります。

collectionId列から値を抽出してidUrl列に入れる必要がありcollectionIdます。

このように見えるはずです

+----+------------------------------------------------------------------------------------------------------------------------------------+
| id | idUrl                                                                                                               | collectionId |                                                                                              |
+----+------------------------------------------------------------------------------------------------------------------------------------+
|  1 | id?books.0.levelOfDetail=high&books.0.shopId=727&books.0.type=books&collectionId=20092014&type=seasonPassSource     | 20092014     |
|  2 | id:call3?books.0.levelOfDetail=high&books.0.shopId=123&books.0.type=books&collectionId=16645&type=seasonPassSource  | 16645        |
|  3 | id:call3?maxDepth=1&parentMixId=777&type=mixSource                                                                  | NULL         |
|  4 | idSet:call3?keyword=%22FOO%20BAR%20.%5E%24*%2B%3F%7C%28%29%7B%7D%5B%5D%22&type=wishListSource                       | NULL         |
|  5 | idSet:call3?books.0.levelOfDetail=high&books.0.shopId=727                                                           | NULL         |
|  6 | idSetSource.0.booksNumber=2&collectionId=16645&books.0.levelOfDetail=high&books.0.type=books&type=seasonPassSource  | 16645        |
|  7 | idSet:call3?keyword=hero&type=wishListSource                                                                        | NULL         |
+----+-------------------------+----------------------------------------------------------------------------------------------------------+

MySQLでこれを行う必要があります。何か案は?

4

1 に答える 1

2

を使用してそれを行う別の方法SUBSTRING_INDEX()

UPDATE callInfo
   SET collectionId = SUBSTRING_INDEX(SUBSTR(idUrl, INSTR(idUrl, 'collectionId=') + 13), '&', 1)
 WHERE idUrl LIKE '%collectionId=%'

出力:

| | ID | ... | コレクションID |
|----| ... |-------------|
| | 1 | ... | 2009年2014年 |
| | 2 | ... | 16645 |
| | 3 | ... | (ヌル) |
| | 4 | ... | (ヌル) |
| | 5 | ... | (ヌル) |
| | 6 | ... | 16645 |
| | 7 | ... | (ヌル) |

これがSQLFiddleのデモです

于 2013-08-28T03:29:04.810 に答える