【发布时间】:2012-07-01 18:00:33
【问题描述】:
我想改变
{foo, {bar}, foobar}
到
{foo, bar, foobar}
在与'{.*{' 匹配的所有行中。 IE。删除所有花括号 { 和 },除了最外面的一对。
这样做
mysql -h $H -u $U -p$P $DB -B -e "SELECT id FROM t WHERE col REGEXP '{.*{'" > bad.txt
选择需要此替换的所有行。如何快速进行这种替换?
编辑:
我可以这样做吗
update table set column = REPLACE(column,'{','');
然后恢复出最外的一对
update table set column = REPLACE(column,'^','{');
update table set column = REPLACE(column,'$','}');
我收到错误
mysql> EXPLAIN UPDATE t SET col=REPLACE(REPLACE(REPLACE(REPLACE(col,'{{','{'),'}}','}'), ', {', ', '), '}, ', ', ');
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE t SET col=REPLACE(REPLACE(REPLACE(REPLACE(' at line 1
【问题讨论】:
-
mysql 中没有 regexp-replace(尽管您可以使用自定义函数来处理 replace())。与stackoverflow.com/questions/986826/… 重复