MySQL替换ASCII字符

时间:2016-02-23 07:22:17

标签: mysql

MySQL我有一些奇怪的问题。我试图匹配两个字符串,但在一个字符串中有额外的字符。

初始字符串看起来像这样'Ascot ' 当我选择:

select ascii(substring(name, 1, 1)), ascii(substring(name, 7, 1))

我得到194, 194。但是当我替换:

select replace(name, char(194), '' )

它在'?Ascot?'中显示为phpMyAdmin,并且未进行匹配。有人可以帮帮我吗?

问题列定义为utf8mb4_unicode_ci。我试图将此与另一个定义为utf8_general_ci的表中的列匹配。 试图将utf8_general_ci更改为utf8mb4_unicode_ci,但没有结果。

当我substring(name, 2, 5)时,它匹配。因此解决方案应该是替换这些字符。

修改

我尝试使用以下函数删除非字母数字字符,它现在似乎正常工作:

BEGIN
  DECLARE i INT DEFAULT 1;
  DECLARE v_char VARCHAR(1);
  DECLARE v_parseStr VARCHAR(255) DEFAULT ' ';

WHILE (i <= LENGTH(prm_strInput) )  DO 

  SET v_char = SUBSTR(prm_strInput,i,1);
  IF v_char REGEXP  '^[A-Za-z0-9 ]+$' THEN  #alphanumeric

        SET v_parseStr = CONCAT(v_parseStr,v_char);  

  END IF;
  SET i = i + 1;
END WHILE; 
RETURN trim(v_parseStr);
END

但这种效率极低......

1 个答案:

答案 0 :(得分:-2)

在mysql查询之前使用它:

mysql_query("SET NAMES 'utf8'");