例如在专栏"公司":
中+---------------+
|company |
+---------------+
|MyCompany, Inc.|
+---------------+
假设用户只是键入" MyCompany Inc"进入没有昏迷和句号的搜索查询。
如何制作仍会返回的MySQL Select查询" MyCompany,Inc。" ?
不仅仅是昏迷和时期,但必须忽略所有特殊字符。
答案 0 :(得分:3)
你必须创建mysql函数 -
CREATE FUNCTION `removeSpacialChar`(`in_str` varchar(4096)) RETURNS varchar(4096) CHARSET utf8
BEGIN
DECLARE out_str VARCHAR(4096) DEFAULT '';
DECLARE c VARCHAR(4096) DEFAULT '';
DECLARE pointer INT DEFAULT 1;
IF ISNULL(in_str) THEN
RETURN NULL;
ELSE
WHILE pointer <= LENGTH(in_str) DO
SET c = MID(in_str, pointer, 1);
IF (ASCII(c) >= 48 AND ASCII(c) <= 57) OR (ASCII(c) >= 65 AND ASCII(c) <= 90) OR (ASCII(c) >= 97 AND ASCII(c) <= 122) THEN
SET out_str = CONCAT(out_str, c);
ELSE
SET out_str = CONCAT(out_str, '');
END IF;
SET pointer = pointer + 1;
END WHILE;
END IF;
RETURN out_str;
END
现在您运行以下查询
SELECT removeSpacialChar('abc&*&*%^ %*^*%^,--&*&^^%^%^^&^%%^%$$#%@#$@$@!@$!123');
输出: -
ABC123