选择并替换mysql中的所有非键盘字符

时间:2014-02-25 20:34:19

标签: mysql

这是我的代码。

SELECT * 
FROM  `accounts` 
WHERE NOT name REGEXP  '^[[.NUL.]-[.DEL.]]*$'

我希望所有表格中的所有非键盘字符都替换为空格。

希望有人能够真正做到这一点。

1 个答案:

答案 0 :(得分:0)

您无法在SQL中轻松完成此任务。

最直接的方法是对数据库进行逻辑备份,使用sedperl(或某些类似工具进行字符串替换),然后重新导入数据。

您应该通过将数据导入测试数据库(或至少是测试模式)来测试这一点,以确保它不会损害您的数据。

假设“非键盘”字符是指“不可打印”字符,并且您使用的是Linux,则可以使用mysqldump和sed的组合来完成此操作:

# dump your schema and data
mysqldump --single-transaction your_schema > /tmp/your_schema.sql  

# copy the dump file and replace all non-printable characters with a space
sed -e 's/[^[:print:]]/ /g' /tmp/your_schema.sql > /tmp/your_schema_test.sql

# create an empty test schema to test the import
mysqladmin create your_schema_test

# import the data into the test schema
mysql -f your_schema_test < /tmp/your_schema_test.sql