【发布时间】:2019-05-20 10:08:57
【问题描述】:
我正在使用 PostgreSQL。我有一张桌子keywords:
# Table name: keywords
#
# id :integer not null, primary key
# text :string not null
# match_type :string not null
# adgroup_id :integer not null
表有一个唯一索引USING btree (match_type, adgroup_id, text)
现在,问题是对于相同的 adgroup_id 和 match_type 有类似 "Hello" 和 " Hello" 或 "Hello " 或 " Hello " 的文本(注意前导/尾随空格)。
问题是text 列在字符串的开头和结尾包含那些导致错误数据的空格(如果没有这些空格,它就不会通过 uniq 索引)。
我计划将来在插入之前添加空白修剪,但首先我需要清理数据。
如何删除“重复”数据而留下唯一数据(基于字符串比较没有前导和尾随空格)?
【问题讨论】:
-
是否存在所有元素都包含空格的组?没有“你好”,只有“你好”和“你好”?
-
@S-Man 我不确定我是否理解您提出的问题。可以是 db 中的任何选项(带或不带空格)。所以可以有两行
"Hello"和" Hello"和两行"Hi"和"Hi "甚至可能还有" Hi"和"Hi "(在这种情况下我仍然必须在格式正确的数据库(修剪) -
好的添加了一个更通用的解决方案
标签: database postgresql unique-constraint