MYSQL:可以查找但不能替换损坏的字符

MYSQL:可以查找但不能替换损坏的字符,mysql,character-encoding,Mysql,Character Encoding,我有一个奇怪的问题,我可以找到包含我正在查找的损坏字符的字段,但使用“替换”将影响零项: 下面的查询(在%后面有损坏的字符,只能在Firefox文本字段中看到,顺便说一句,不能在Chrome或Safari中看到)有效,并将返回超过1000条记录 SELECT * from resource_data where value like '%'; 但是下面的更新查询影响零项,尽管具有完全相同的like值 UPDATE resource_data SET value = REPLACE(value,

我有一个奇怪的问题,我可以找到包含我正在查找的损坏字符的字段,但使用“替换”将影响零项:

下面的查询(在%后面有损坏的字符,只能在Firefox文本字段中看到,顺便说一句,不能在Chrome或Safari中看到)有效,并将返回超过1000条记录

SELECT * from resource_data where value like '%';
但是下面的更新查询影响零项,尽管具有完全相同的like值

UPDATE resource_data
SET value = REPLACE(value,'%','')
WHERE value like '%';
有什么想法吗

仅供参考,以下是Firefox中字符的外观:

试试这个

UPDATE resource_data
SET value = REPLACE(value,'%','')
WHERE INSTR(value, '%') > 0

如果它是十六进制
1D
拉丁语1

查看是否提取行,更正:

SELECT REPLACE(value, UNHEX('1D'), '')
    FROM resource_data
    WHERE value LIKE CONCAT('%', UNHEX('1D'), '%');

如果显示行,则考虑做< /P>

UPDATE resource_data
    SET value = REPLACE(value, UNHEX('1D'), '');

当然,您知道
%
的通配符运算符,就像
一样。正如我前面提到的,在%后面看不到损坏的字符,但是它们在那里。如果我错了,请注意,但是值像“%”;匹配任何字符串,即使是空字符串。根据我在回复上述评论时所说的,它不是空的。你说的“损坏”字符是什么意思?您的where语句匹配任何字符串(这意味着您的所有记录都有“损坏”字符),谢谢,但也有0行受影响。问题其实并不在WHERE子句中,因为即使忽略它也会以同样的方式完全失败。SELECT语句起作用,但update语句失败,原因是“调用本机函数'UNHEX'时参数计数不正确”。哦,等等……我刚刚剪切并粘贴了您的代码,刚刚意识到update语句中有一个错误……它应该是:
updateresource\u data SET value=REPLACE(value,UNHEX('1D'),'')一旦我修复了它,它就成功了!