如何在所选mysql表的任何列/任何行中替换单个字母?我找到了一个解决方案,但它只适用于整个单词。我有正确的编码问题,现在我必须修复这些记录。 PHP替换不起作用,超过50k记录。
例如:
�wierk
- > Świerk
或
Wizyt�wka
- > wizytówka
答案 0 :(得分:1)
您可以通过这种方式有效地替换某个角色:
update <table> set <field> = replace(<field>, CHAR(<old ascii>), CHAR(<new ascii>))
它也适用于VT垂直制表符,ascii 21等特殊字符。
要获取ASCII值,您可以使用ord()
$ascii = ord($char);
但首先,我会确保它实际上 你的表中有错误的数据,而不仅仅是你在查询时得到的错误编码。
在运行查询之前,您是否尝试过mysql_set_charset('utf8')
?
答案 1 :(得分:0)
如果它是一个字符串
,你可以遍历字符串的每个字母$myString = "hello";
$length = strlen($myString);
for($a = 0; $a<=$length-1; $a++){
echo $myString[$a]."<br>";
if($mystring[$a] == '�'){
/* do something */
}
}
还有其他方式,如explode()
答案 2 :(得分:0)
使用LOCATE()
找到字母,SUBSTRING()
和CONCAT()
来修复它。
SELECT Content,CONCAT(SUBSTRING(Content,1,LOCATE('�', Content)-1),"Ś",SUBSTRING(Content,LOCATE('�', Content)+1)) FROM Table