使用正则表达式更新SQL语句

时间:2013-01-18 05:58:27

标签: mysql regex

我在表pictures中有2个表,一个是已命名的图片,另一个是已命名的媒体,我有一个包含一些文本的字段description,在表media中有一行{{ 1}}我想更新。我需要编写一个sql查询来更新表媒体中的行url,该表媒体使用正则表达式来自表url中的description中的特定字符串,这可以通过一个SQL查询来完成吗?

1 个答案:

答案 0 :(得分:2)

您可以使用REGEXP搜索字符串,但无法返回结果。如果那样好,那么你可以尝试这样的事情:

如果您的表格如下:

create table media(media_id int, url varchar(200));
create table pictures(pic_id int, media_id int, description text);

你可以这样做:

UPDATE pictures p
LEFT JOIN media m 
ON p.media_id = m.media_id
SET url='http://newurl.com/pic.jpg'
WHERE REGEXP '.*regexpString$';

如果您只需要替换部分网址,可以尝试:

UPDATE pictures p
LEFT JOIN media m 
ON p.media_id = m.media_id
SET url=REPLACE(url, 'olddomain.com', 'newdomain.com')
WHERE REGEXP '.*regexpString$';