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

标签 sql mysql string search

我不是数据库专家,大部分事情都是通过 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/

相关文章:

mysql - 如何拆分逗号分隔值

sql - 如何跳过唯一约束错误

c# - 不能将 NULL 值插入列、表;列不允许空值。插入失败

PHP 修复字段列表中的 Column 'id' 不明确,不更改列名

java - 使用java创建正则表达式以从字符串中提取4位数字

arrays - Lua中将字符串转换为变量名

c - 如何使用 sprintf 在特定位置写入 C 中的 char 数组?

sql - 在日期时间范围内加速连接表的最佳实践

mysql - 使用 Mysql 处理时区

php - 在数据库中搜索确切的词(不区分大小写)