替换文本字符串MySQL

替换文本字符串MySQL,mysql,sql,phpmyadmin,Mysql,Sql,Phpmyadmin,我最近转移到了我个人网站的另一个平台,我遇到了一个问题,以前的字符编码,如和,现在被奇怪地重新编码为: “ ” ’ ’ ' 我以前看过,上一次,我手动浏览并更新了每篇文章。不过,这一次,我想采取更务实的方法,更新数据库 我将如何用正确的字符替换所有出现的这些字符串 我想应该是这样的: SELECT REPLACE(''',''') 但我是否需要谨慎,包括像\?这样的转义

我最近转移到了我个人网站的另一个平台,我遇到了一个问题,以前的字符编码,如和,现在被奇怪地重新编码为:

“
”
’
’
'
我以前看过,上一次,我手动浏览并更新了每篇文章。不过,这一次,我想采取更务实的方法,更新数据库

我将如何用正确的字符替换所有出现的这些字符串

我想应该是这样的:

SELECT REPLACE(''',''')
但我是否需要谨慎,包括像\?这样的转义字符?另外,如何在整个数据库中执行这种类型的替换

注意:我将使用phpMyAdmin来执行这些替换,因此我希望只需在SQL选项卡中键入一系列命令即可。不过,如果有必要,我确实可以从命令行访问MySQL服务器

更新:

有关结构的更多信息:

表名为字段\数据\注释\正文 字段名为注释\正文\值 所讨论的领域属于longtext类型 我已尝试运行Johan的建议,但它返回0个受影响的行:

DELIMITER $$

CREATE FUNCTION FixEncoding(input longtext) RETURNS longtext
BEGIN
  DECLARE output longtext;

  SET output = input;   
  SET output = REPLACE(output,''','\'');
  SET output = REPLACE(output,'’','\'');
  SET output = REPLACE(output,'” ','"');
  SET output = REPLACE(output,'“','"');
  SET output = REPLACE(output,'’','\'');

  RETURN output;
END $$

DELIMITER ;
UPDATE field_data_comment_body SET comment_body_value = FixEncoding(comment_body_value) WHERE entity_id <> 0;

在MySQL中,可以使用\对字符进行转义

我会编写一个函数来为您进行替换,然后进行更新,类似这样的事情

DELIMITER $$

CREATE FUNCTION FixEncoding(input varchar) RETURNS varchar
BEGIN
  DECLARE output varchar;

  SET output = input;   
  SET output = REPLACE(output,'&#039;','\'');
  SET output = REPLACE(output, .....
  .....

  RETURN output;
END $$

DELIMITER ;
UPDATE table1 SET column1 = FixEncoding(Column1) WHERE id <> 0;

我已尝试对您提供的代码进行改编,但似乎对行没有影响。如果您遇到数据库和表示层之间的翻译问题,请尝试将数据库的编码更改为latin1。我不确定是否是这种情况,我更新我的问题时使用的查询按预期显示了受影响的行。虽然此功能在longtext中不起作用,但它仍然引导我找到我的答案+1+accept,谢谢Johan!从实体id为0的字段\数据\注释\正文中选择*作为行数的行数是多少;返回?63行。我想我把它排序为:updatefield\u data\u comment\u body set comment\u body\u value=replaceComent\u body\u value,&;039;','\; 虽然不清楚为什么你的函数不起作用,但可能与字段类型有关?它与varchar一起起作用,不确定关于longtext。
DELIMITER $$

CREATE FUNCTION FixEncoding(input varchar) RETURNS varchar
BEGIN
  DECLARE output varchar;

  SET output = input;   
  SET output = REPLACE(output,'&#039;','\'');
  SET output = REPLACE(output, .....
  .....

  RETURN output;
END $$

DELIMITER ;
UPDATE table1 SET column1 = FixEncoding(Column1) WHERE id <> 0;
ALTER TABLE `test`.`test` CHARACTER SET latin1 COLLATE latin1_general_ci;