清除PG cell中的 non break space.
问题描述
Postgresql 10.4.
现有 table posters, 含 column content_html, content_html 中可能包含类似<td> </td>
的内容。需要移除该column中的出现的non-break space,但该column 关联其他的attribute,不能直接使用replace来修改,需要先找到对应的poster记录,然后一并修改。
尝试查找对应记录:
Poster.where("content_html LIKE ?", '% %')
无效。
解决方法
Google后尝试:
Poster.where("content_html LIKE ?", "%\xc2\xa0%")
看stack overflow上Replacing nonbreaking spaces (%A0) in Postgres,有人说该方法无效,可能是PG版本问题?PG 10.4是可以的。
或者改用Unicode characters:
Poster.where("content_html LIKE ? OR content_html LIKE ?", "%\u00a0%", "%\u2002%")
更新时,使用:
poster.content_html.tr("%\xc2\xa0%", " ")
# or
poster.content_html.tr("%\u00a0%", " ")
poster.content_html.tr("%\u2002%", " ")