【问题标题】:How to replace Æ to AE for all strings in my table?如何将表中所有字符串的 Æ 替换为 AE?
【发布时间】:2013-09-04 21:34:45
【问题描述】:

我的数据库中有名称,例如 Ætherling 或其他 AE 可以位于字符串中间的词。我想将 Æ 的所有实例更改为 AE。我数据库中的所有字符串都是 utf8_unicode。

这是我目前拥有的:

UPDATE `cards` set name = REPLACE(name,'Æ','AE');

但这仅适用于特定列。如何在 MySQL 中做整张表?

【问题讨论】:

  • 对每个字段执行此操作。或者更好的是,修复客户端代码。
  • 你能详细说明这是干什么用的吗?是否可以解决编码问题?因为这些几乎总是可以修复的
  • 当我尝试检索具有确切名称的文件时,它会尝试检索以下内容:似乎最好将 Æ 重命名为 AE,这首先可以缓解基本问题。
  • 你的意思是文件系统上的一个文件?
  • 你应该修复你的文件 IO 代码,而不是破坏你的数据。

标签: php mysql


【解决方案1】:

我认为运行将更新所有列的查询没有多大意义,因为其中一些列可能不包含 varchar 值。

您必须明确指定您的字段:

UPDATE `cards` set 
   name = REPLACE(name,'Æ','AE'), 
   other = REPLACE(other,'Æ','AE'), 
   andother = REPLACE(andother,'Æ','AE');

或者你可以从这里使用查询: Replace all fields in MySQL

select concat(
       'UPDATE my_table SET ',
       column_name,
       ' = REPLACE(', column_name, ', ''a'', ''e'');')
from information_schema.columns
where table_name = 'my_table';

它将生成一组更新查询。您复制它们,粘贴它们并运行它们。

【讨论】:

    【解决方案2】:

    您可以随时转储(导出)表格内容,获取粘贴到文本编辑器的创建和插入命令,将所有 Æ-s 替换为 AE,删除表格并运行导出的脚本以重新创建它与您所做的更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-11
      • 2017-01-31
      • 2022-01-11
      相关资源
      最近更新 更多