gpt4 book ai didi

mysql - 替换文本字符串 MySQL

转载 作者:可可西里 更新时间:2023-11-01 08:21:49 25 4
gpt4 key购买 nike

我最近为我的个人网站搬到了不同的平台,我遇到了一个问题,以前的字符编码,如"""' 现在奇怪地重新编码为:

“
”
’
’
'

我以前看过这个,上次我手动检查并更新了每篇文章。然而,这一次,我想通过更新数据库来采取更务实的方法。

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

我认为它会像这样:

SELECT REPLACE(''',''')

但是我是否需要小心并包含像 \ 这样的转义字符?另外,我将如何在整个数据库中执行这种类型的替换?

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

更新:

关于结构的更多信息:

  • 表名为“field_data_comment_body”
  • 字段名为“comment_body_value”
  • 有问题的字段是“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;

更新:这不是翻译错误,因为它返回 63 行:

SELECT  `comment_body_value` 
FROM `field_data_comment_body`
WHERE `comment_body_value` LIKE '%&amp;#039;%'
LIMIT 0 , 30

最佳答案

在 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;

如果这不起作用,那么您可能遇到了数据库和表示层之间的转换问题。
对您的数据库进行备份
并使用以下方法更改表的编码:

ALTER TABLE `test`.`test` CHARACTER SET latin1 COLLATE latin1_general_ci;

关于mysql - 替换文本字符串 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6084958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com