我使用Dragon Naturally Speaking处理一堆音频,结果导入数据库。现在我在数据库中有一堆疯狂的角色,如:�
。如何摆脱所有不是“正常”空格或字母/数字的符号/其他东西?
答案 0 :(得分:1)
DELETE FROM tbl WHERE results NOT REGEXP '[[:alnum:]]+'
- 来自documentation
因为我误解了@Alan的要求...... 我的第一个倾向是使用外部代码消除噪音。如果你不能这样做,MariaDB开箱即用REGEXP_REPLACE,对于正确的mysql,那里有exists a UDF类似的东西。所以,你使用类似的东西:
UPDATE tbl SET results = regexp_replace(results, '[^[:alnum:][:space:]]' '');
您可以使用this page中的功能:
DELIMITER $$
CREATE FUNCTION `regex_replace`(pattern VARCHAR(1000),replacement VARCHAR(1000),original VARCHAR(1000))
RETURNS VARCHAR(1000)
DETERMINISTIC
BEGIN
DECLARE temp VARCHAR(1000);
DECLARE ch VARCHAR(1);
DECLARE i INT;
DECLARE j INT;
DECLARE qbTemp VARCHAR(1000);
SET i = 1;
SET j = 1;
SET temp = '';
SET qbTemp = '';
IF original REGEXP pattern THEN
loop_label: LOOP
IF i>CHAR_LENGTH(original) THEN
LEAVE loop_label;
END IF;
SET ch = SUBSTRING(original,i,1);
IF NOT ch REGEXP pattern THEN
SET temp = CONCAT(temp,ch);
ELSE
SET temp = CONCAT(temp,replacement);
END IF;
SET i=i+1;
END LOOP;
ELSE
SET temp = original;
END IF;
SET temp = TRIM(BOTH replacement FROM temp);
SET temp = REPLACE(REPLACE(REPLACE(temp , CONCAT(replacement,replacement),CONCAT(replacement,'#')),CONCAT('#',replacement),''),'#','');
RETURN temp;
END$$
DELIMITER ;
然后我就能运行这个命令:
更新成绩单SET transcript = regex_replace(' [^ [:alnum:] [:space:]]','',transcript);``
希望有帮助...