情景:
有一个表数据,插入的数据字段中含有空格,以至于数组分组时出分支,原始数据如下
mydb=# select row_number() over(partition by begincity order by pubtime desc),* from bills;
row_number | id | goodsdesc | beginunit | begincity | pubtime | amount
————+—-+————————————+————+—————+———————+———
1 | 2 | 建 筑 设 备 | 福 建 省 | 三 明 市 | 2015-10-05 07:21:22 | 165.29
1 | 9 | 旋 挖 附 件 39 吨 | 河 南 省 | 三 门 峡 市 | 2015-10-05 11:38:38 | 3739.03
2 | 7 | 旋 挖 附 件 38 吨 | 河 南 省 | 三 门 峡 市 | 2015-10-05 10:48:38 | 6313.45
3 | 8 | 旋 挖 附 件 35 吨 | 河 南 省 | 三 门 峡 市 | 2015-10-05 10:48:38 | 6850.54
4 | 6 | 鲜 香 菇 2000 斤 | 河 南 省 | 三 门 峡 市 | 2015-10-05 10:38:29 | 7806.61
5 | 5 | 5 0 铲 车 , 后 八 轮 翻 斗 车 | 河 南 省 | 三 门 峡 市 | 2015-10-05 07:53:13 | 9407.32
1 | 11 | 普 货 40 吨 需 13 米 半 挂 一 辆 | 上 海 市 | 上 海 市 | 2015-10-05 08:13:59 | 3564.18
1 | 1 | 衣服 | 海南省 | 三亚市 | 2015-10-05 09:32:01 | 1621.47
1 | 4 | 普货 | 福建省 | 三明市 | 2015-10-05 15:19:17 | 5409.37
2 | 3 | 设备 | 福建省 | 三明市 | 2015-10-05 11:21:54 | 114.85
1 | 10 | 设备 | 上海市 | 上海市 | 2015-10-05 07:59:35 | 5147.07
(11 rows)
从数据上看,福建省三明市本来是同一个的,但是由于空格关系被识别为两组。
解决:
string 为要处理的字段,可用到的函数有:
字符前的空格,用ltrim(string)
字符后的空格,用rtrim(string)
字符中的空格,用replace(string, ‘ ‘, ‘ ‘)
mydb=# update bills set goodsdesc=replace(goodsdesc,’ ‘,”),beginunit=replace(beginunit,’ ‘,”),begincity=replace(begincity,’ ‘,”);
UPDATE 11
结果:
mydb=# select row_number() over(partition by begincity order by pubtime desc),* from bills; //以begincity进行分组,按pubtime降序排序
row_number | id | goodsdesc | beginunit | begincity | pubtime | amount
————+—-+————————+———–+———–+———————+———
1 | 1 | 衣服 | 海南省 | 三亚市 | 2015-10-05 09:32:01 | 1621.47
1 | 4 | 普货 | 福建省 | 三明市 | 2015-10-05 15:19:17 | 5409.37
2 | 3 | 设备 | 福建省 | 三明市 | 2015-10-05 11:21:54 | 114.85
3 | 2 | 建筑设备 | 福建省 | 三明市 | 2015-10-05 07:21:22 | 165.29
1 | 9 | 旋挖附件39吨 | 河南省 | 三门峡市 | 2015-10-05 11:38:38 | 3739.03
2 | 7 | 旋挖附件38吨 | 河南省 | 三门峡市 | 2015-10-05 10:48:38 | 6313.45
3 | 8 | 旋挖附件35吨 | 河南省 | 三门峡市 | 2015-10-05 10:48:38 | 6850.54
4 | 6 | 鲜香菇2000斤 | 河南省 | 三门峡市 | 2015-10-05 10:38:29 | 7806.61
5 | 5 | 50铲车,后八轮翻斗车 | 河南省 | 三门峡市 | 2015-10-05 07:53:13 | 9407.32
1 | 11 | 普货40吨需13米半挂一辆 | 上海市 | 上海市 | 2015-10-05 08:13:59 | 3564.18
2 | 10 | 设备 | 上海市 | 上海市 | 2015-10-05 07:59:35 | 5147.07
(11 rows)