起始位置:我有一个SQL-DB,它包含几个带有hunderts或tousends条目的表。现在在几个字段(列)中有URL,应该缩短(到原始URL的摘录)并添加新参数。问题是,有一些«发现&替换»做:
查找所有表格的所有字段/列中的所有(旧)URL(独立或中间文本)...
http://www.domain.com/click?p(abcdef)a(123456)url(http://www.url.com)
...并使用(新)网址替换旧网址:
...正如您所看到的,我需要在url-parameter中使用通配符...就像http://www.domain.com/click?p(abcdef)a(123456)url(*)
一样,因为旧网址以)
结尾,我只需要旧网址的摘录(第二个网址) )加上一个新的url-parameter。
表示例:
+----------+---+-------------------+---------------+---+--------------+--------------+
| entry_id | … | field_id_1 | field_ft_1 | … | field_id_199 | field_ft_199 |
+----------+---+-------------------+---------------+---+--------------+--------------+
| 21364 | … | blabla URL blabla | NULL | … | none | none |
| 21363 | … | text URL text | text URL text | … | none | URL |
| … | … | text URL text URL | NULL | … | URL text | none |
+----------+---+-------------------+---------------+---+--------------+--------------+
字段/列值示例:
The new «App of the Week» is named «<a href="http://www.domain.com/click?p(abcdef)a(123456)url(https://itunes.apple.com/ch/app/popagraph/id587595362?mt=8)">PopAGraph</a>».
This App does this and that and bla bla bla <a href="http://www.domain.com/click?p(abcdef)a(123456)url(https://itunes.apple.com/ch/app/popagraph/id587595362?mt=8)">kostenlos</a>.
In the iOS Store there are «Editors Choise» like: «<a href="http://www.domain.com/click?p(abcdef)a(123456)url(https://itunes.apple.com/ch/app/the-room-two/id667362389?mt=8)">The Room Two</a>» (CHF 3.00). And some more Text bla bla bla.
更新:由于缺乏细节而重写了整个问题
答案 0 :(得分:0)
要查找旧字符串的最后URL
部分,请使用substring_index
和substr
个函数。
示例:
SET @old_value :=
'http://www.domain.com/click?p(abcdef)a(123456)url(http://www.url.com)';
select @url := substr( @u := substring_index( @old_value, '(', -1 )
from 1
for ( length( @u ) - 1 )
) as url
这将返回
+--------------------+
| url |
+--------------------+
| http://www.url.com |
+--------------------+
要使用新的url
值更新记录,您必须使用concat
将查询参数附加到网址。
示例:
update my_table
set url_col = concat( @url, '/?at=uvwxyz' )
where
url_col = @old_value
-- and -- add more conditions if required
-- ... ...
请参阅 :