替换mysql中的单个字母

时间:2014-01-30 13:22:08

标签: php mysql regex replace

如何在所选mysql表的任何列/任何行中替换单个字母?我找到了一个解决方案,但它只适用于整个单词。我有正确的编码问题,现在我必须修复这些记录。 PHP替换不起作用,超过50k记录。

例如:

�wierk - > Świerk

Wizyt�wka - > wizytówka

3 个答案:

答案 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