Обсуждение: Sorting CSV string and removing Duplicates
Hello,
I have a csv string in a text field that is unsorted and contains duplicates.
Is there a simple way to remove these and sort the string.
E.g
2,18,20,23,1,27,1,2,8,16,17,18,20,22,23,27
i tried string to array and unique but that did not work...
Any suggestions on how to do this without writing a function?
Any help is appreciated.
Thanks
A
On Mon, Jul 27, 2015 at 12:53 PM, Alex Magnum <magnum11200@gmail.com> wrote:
Hello,I have a csv string in a text field that is unsorted and contains duplicates.Is there a simple way to remove these and sort the string.E.g2,18,20,23,1,27,1,2,8,16,17,18,20,22,23,27i tried string to array and unique but that did not work...Any suggestions on how to do this without writing a function?Any help is appreciated.
Are you looking for this.
postgres=# SELECT unnest(string_to_array(t, ',')) from test group by 1;
unnest
--------
2
18
8
20
22
16
27
17
23
1
(10 rows)
Regards,
Dinesh
ThanksA
> > I have a csv string in a text field that is unsorted and contains duplicates. > Is there a simple way to remove these and sort the string. > > E.g > 2,18,20,23,1,27,1,2,8,16,17,18,20,22,23,27 > Do you need to eventually load the data in Postgres? I'd personally use python to deal with this, we're talking 4 or 5 lines here, if even. I suspect you can do the same with perl or ruby or whatever is your weapon of choice. How columns does your csv file has? Is it a one-line file? -- http://yves.zioup.com gpg: 4096R/32B0F416
> Hello,
>
> I have a csv string in a text field that is unsorted and contains
> duplicates.
> Is there a simple way to remove these and sort the string.
>
> E.g
> 2,18,20,23,1,27,1,2,8,16,17,18,20,22,23,27
>
> i tried string to array and unique but that did not work...
> Any suggestions on how to do this without writing a function?
>
> Any help is appreciated.
>
> Thanks
> A
chris=# SELECT distinct x::int from
unnest(string_to_array('2,18,20,23,1,27,1,2,8,16,17,18,20,22,23,27',
',')) x order by x::int;
x
----
1
2
8
16
17
18
20
22
23
27
(10 rows)
Bye,
Chris.
On Mon, Jul 27, 2015 at 12:57 PM, dinesh kumar <dineshkumar02@gmail.com> wrote:
On Mon, Jul 27, 2015 at 12:53 PM, Alex Magnum <magnum11200@gmail.com> wrote:Hello,I have a csv string in a text field that is unsorted and contains duplicates.Is there a simple way to remove these and sort the string.E.g2,18,20,23,1,27,1,2,8,16,17,18,20,22,23,27i tried string to array and unique but that did not work...Any suggestions on how to do this without writing a function?Any help is appreciated.Are you looking for this.postgres=# SELECT unnest(string_to_array(t, ',')) from test group by 1;unnest--------21882022162717231(10 rows)
OR
Might be something like this
postgres=# WITH sortedstring as
postgres-# (
postgres(# SELECT unnest(string_to_array(t, ','))::int from test group by 1 ORDER BY 1
postgres(# ) SELECT array_agg(unnest) FROM sortedstring;
array_agg
------------------------------
{1,2,8,16,17,18,20,22,23,27}
(1 row)
Regards,
Dinesh
Dinesh
Hi Danish, yes thats the one I was looking for. Thanks a lot!!!
On Tue, Jul 28, 2015 at 1:32 AM, dinesh kumar <dineshkumar02@gmail.com> wrote:
On Mon, Jul 27, 2015 at 12:57 PM, dinesh kumar <dineshkumar02@gmail.com> wrote:On Mon, Jul 27, 2015 at 12:53 PM, Alex Magnum <magnum11200@gmail.com> wrote:Hello,I have a csv string in a text field that is unsorted and contains duplicates.Is there a simple way to remove these and sort the string.E.g2,18,20,23,1,27,1,2,8,16,17,18,20,22,23,27i tried string to array and unique but that did not work...Any suggestions on how to do this without writing a function?Any help is appreciated.Are you looking for this.postgres=# SELECT unnest(string_to_array(t, ',')) from test group by 1;unnest--------21882022162717231(10 rows)ORMight be something like thispostgres=# WITH sortedstring aspostgres-# (postgres(# SELECT unnest(string_to_array(t, ','))::int from test group by 1 ORDER BY 1postgres(# ) SELECT array_agg(unnest) FROM sortedstring;array_agg------------------------------{1,2,8,16,17,18,20,22,23,27}(1 row)Regards,
Dinesh