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
但这种效率极低......
答案 0 :(得分:-2)
在mysql查询之前使用它:
mysql_query("SET NAMES 'utf8'");