删除SQL中的空格

时间:2012-04-24 21:23:59

标签: mysql sql

我的数据库中有很多记录,空格过多:

to buy  books is  like to buy
bad   journalists  aren't taken   hostage
  for your   information  this isn't    what we do

在(我的)SQL中有没有办法   - 只用一个替换所有空格   - 从字符串的开头和结尾删除所有空格?

否则我总是可以在php中查看,通过

查看所有记录
$cleaned = trim(preg_replace('/\s+/', ' ', $string));

但这需要我想象的更多时间(我有数百万条记录)

2 个答案:

答案 0 :(得分:2)

由于这是一次性操作,您可以将记录导出为某些textformat(csv,sql insert ..),并替换为支持正则表达式的优秀texteditor。 当你的regexpr完美无缺时,给你一个备份。之后导入到新表中。

当您以代码方式进行替换时,您可以过滤掉不需要替换的记录,例如"其中字段类似于" %%""加快速度。

最后但并非最不重要的是,您必须更新编写这些记录的服务器代码,以便在写入数据库之前过滤掉的额外空格。

答案 1 :(得分:0)

在MySQL中只使用正则表达式进行模式匹配的内置支持。可以使用用户定义的函数(例如http://www.mysqludf.org/lib_mysqludf_preg/)来解决您的需求。

这个不支持多字节字符。因此,您只能使用此解决方案进行单字节字符编码。