如何替换数据库表的每一列中的元素?

时间:2010-08-16 10:39:34

标签: sql mysql string search

我不是数据库的大师,通过PHP做大部分事情,比如数据操作,即使它是一个内部任务。但是,PHP在这种情况下并不是非常有用。我有一个大约有40万条记录的表,它有16列,其他一切正常,但我从文本文件中填充了这个表,该文本文件的每列中的大部分值都是双引号,如 "United States of America" "London"等。

我想删除那些双引号,我可以通过单个查询或SQL脚本找到它们。我已经尝试过PHP及其str_replace方法,但显然记录太大了,无法继续在每条记录上应用此函数,然后对每个值运行2次查询。可以有任何SQL解决方案吗?

数据库是MySQL,引擎可以从MyISAM切换到InnoDB。我在这里看到了这个解决方案:SQL: search for a string in every varchar column in a database但不确定它是否适用于我。感谢。

2 个答案:

答案 0 :(得分:2)

(未测试的)

update mytable set mycol = case
    when mycol like '"%"' then trim(both '"' from mycol)
    else mycol end;

实际上,您可能甚至不需要案例表达式:

update mytable set mycol = trim(both '"' from mycol)'

对其他列重复查询,或者扩展此列以覆盖所有列。

答案 1 :(得分:1)

REPLACE()应该可以正常使用。

UPDATE `table` SET `column` = REPLACE(`column`, '"', '')
相关问题