mySQL支持在update中用正则表达式吗?

ttjacky 2011-10-01 11:25:22
我想把字段内容中的
如下内容
[attach]886[/attach]


替换成

[attach]886[/attach]

正则表达式应该可以支持的? 但是不清楚怎么弄,有没有兄弟给些建议???
字符串分解效率有些差。

就是想用下面的语句更新
update table set message = replace(....)这样的语句
...全文
402 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwwwb 2011-10-05
  • 打赏
  • 举报
回复
录入的时候要规范,处理起来简单一些
无天 2011-10-04
  • 打赏
  • 举报
回复
建议先把那个字段(或者相关的记录)先读取出来,然后使用编程语言进行替换,然后对每个记录依次更新。
如果使用mysql的处理函数来直接进行更新,那会很慢的,而且无法使用索引。
ttjacky 2011-10-02
  • 打赏
  • 举报
回复
谢谢大家,我根据大家的建议搞好了
用这样的句子,实际情况比上面的例子稍复杂些

update table
set message =
replace(concat(left(message,15),substring(message,instr(message,'][')+1)),'[/url]','')
where message regexp '\.+quote\.*url=http://www.aaa.com/viewthread\.*'
rucypli 2011-10-01
  • 打赏
  • 举报
回复
你导出来成文本的 用awk和sed处理
wwwwb 2011-10-01
  • 打赏
  • 举报
回复
格式不固定,拆分字符串
WWWWA 2011-10-01
  • 打赏
  • 举报
回复
MYSQL不支持正则替换,假设格式固定(只有2个[attach])
SET @a='=http://www.aaa.com/viewthread.php?tid=317&page=1#pid5302][attach]886[/attach]';
SELECT RIGHT(@a,LENGTH(@a)-INSTR(@a,'[attach]'))
ACMAIN_CHM 2011-10-01
  • 打赏
  • 举报
回复
mysql> set @x='[at
tach]886[/attach]
';
Query OK, 0 rows affected (0.00 sec)

mysql> select substring_index(substring_index(@x,']',-4),'[',3);
+---------------------------------------------------+
| substring_index(substring_index(@x,']',-4),'[',3) |
+---------------------------------------------------+
| [attach]886[/attach] |
+---------------------------------------------------+
1 row in set (0.00 sec)

mysql>
ACMAIN_CHM 2011-10-01
  • 打赏
  • 举报
回复
MYSQL中目录只支持正则匹配,不支持正则提取。

你的这个需要,如果格式固定,则可以到第二个[ 到第三个] 之间的记录。可以通过一些字符串函数实现。 但如果格式不固定则只能写程序或者存储过程实现。

56,940

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧