【发布时间】:2014-04-06 06:08:36
【问题描述】:
我有一些字符串需要使用 SQL 查询在我的数据库中替换。字符串是:
[attachment=NUMBER]image.jpg[/attacment]
我想用 HTML 图像标签包装该 image.jpg,但 NUMBER 让我感到困惑,因为每个字符串都会有所不同。我可以在此查询中使用可以找到任何数字的通配符吗?
这是我的搜索/替换查询:
UPDATE `hd_posts`
SET `post_content` =
replace(post_content,
'[attachment=NUMBER]',
'<img src="http://mydomain.com/my-theme/images/')
然后……
UPDATE `hd_posts`
SET `post_content` = replace(post_content, '[/attachment]', '" />')
...所以我会这样结束:
<img src="http://mydomain.com/my-theme/images/image.jpg" />
有人可以帮忙吗? NUMBER 有什么用?我觉得这不是太难,但我完全是新手。当然,我已经搜索和搜索,但我无法在任何地方找到这种确切的情况来学习。这两个几乎给了我我需要的东西:
MySQL REPLACE variable string Search & replace in MySql, using regex
但不完全是。我还是一头雾水!感谢您的帮助。
如果我以第一个链接为例...
UPDATE `hd_posts`
SET `post_content` =
CONCAT(SUBSTRING(post_content, 1,
INSTR(post_content,'[attachment') - 1),
SUBSTRING(post_content,
INSTR(post_content, ']'),
LENGTH(post_content)
- INSTR(post_content, '[attachment'))
)
我不知道...在那个例子中,他试图用 '' 替换一个字符串(删除它),但我不知道他是如何做到的,我不知道我该如何学习从中足以做我需要做的事情。
【问题讨论】:
-
您在第一个链接上也有一个正确的答案来满足您的要求。
-
那么,我应该这样做: UPDATE hd_posts SET post_content = CONCAT(SUBSTRING(post_content, 1, INSTR(post_content,'[attachment') - 1),SUBSTRING(post_content , INSTR(post_content, ' ]'), LENGTH(post_content) - INSTR(post_content, '&add_id'))) 我不敢尝试,但这行得通吗?这是一个巨大的数据库,所以如果我搞砸了,从备份中恢复将是一个很大的麻烦。
-
不,那行不通,因为有两个右括号:']'
-
@Ravinder 我忘记在上面的评论中将 '&add_id' 替换为 '[attachment',但如果您能在此为我提供任何帮助,我将不胜感激。
-
您拥有的确切字符串格式是什么?将其发布在问题中。请不要在 cmets 中。