我不是数据库专家,大部分事情都是通过 PHP 完成的,比如数据操作,即使这是一项内部任务。但是,PHP 在这种情况下并不是很有用。我有一个表,里面有大约 40 万条记录,它有 16 列,其他一切正常,但我从一个文本文件填充了这个表,并且该文本文件在每列中的大部分值都用双引号引起来,例如
“美利坚合众国”
“伦敦”
等
我想删除那些我可以通过单个查询或 SQL 脚本找到它们的双引号。我已经尝试过 PHP 及其 str_replace 方法,但显然记录太大,无法继续在每条记录上应用此函数,然后为每个值运行 2 个查询。可以有任何 SQL 解决方案吗?
数据库是MySQL,引擎可以从MyISAM切换到InnoDB。我在这里看到了这个解决方案:SQL: search for a string in every varchar column in a database但不确定它是否适合我。谢谢。
最佳答案
(未经测试)
update mytable set mycol = case
when mycol like '"%"' then trim(both '"' from mycol)
else mycol end;
实际上,您可能甚至不需要 case 表达式:
update mytable set mycol = trim(both '"' from mycol)'
对其他列重复查询,或扩展此查询以覆盖所有列。
关于sql - 如何替换数据库表每一列中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3492396/