我的数据库中有很多记录,空格过多:
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));
但这需要我想象的更多时间(我有数百万条记录)
答案 0 :(得分:2)
由于这是一次性操作,您可以将记录导出为某些textformat(csv,sql insert ..),并替换为支持正则表达式的优秀texteditor。 当你的regexpr完美无缺时,给你一个备份。之后导入到新表中。
当您以代码方式进行替换时,您可以过滤掉不需要替换的记录,例如"其中字段类似于" %%""加快速度。
最后但并非最不重要的是,您必须更新编写这些记录的服务器代码,以便在写入数据库之前过滤掉的额外空格。
答案 1 :(得分:0)
在MySQL中只使用正则表达式进行模式匹配的内置支持。可以使用用户定义的函数(例如http://www.mysqludf.org/lib_mysqludf_preg/)来解决您的需求。
这个不支持多字节字符。因此,您只能使用此解决方案进行单字节字符编码。