Обсуждение: need substring based on delimiter
Hi:
I want to create a string from the first 3 elements of a csv (for example). The csv is longer than 3 elements. Example...
aaa,bbb,ccc,ddd,eee,fff,ggg
I want the string "aaa,bbb,ccc".
Tried splitting this to an array (precursor to appending elements 1,2,3), but failed to be able to reference the elements returned...
stdb_a0=# select string_to_array('aaa,bbb,ccc,ddd,eee,fff,ggg',',');
string_to_array
-------------------------------
{aaa,bbb,ccc,ddd,eee,fff,ggg}
(1 row)
stdb_a0=# select string_to_array('aaa,bbb,ccc,ddd,eee,fff,ggg',',')[1];
ERROR: syntax error at or near "["
If there was a way "position" would return the pos of the 3rd comma, I could use sustring. But I don't think it can :-(
On 08/23/2012 02:30 PM, Gauthier, Dave wrote:
> I want to create a string from the first 3 elements of a csv (for
> example). The csv is longer than 3 elements. Example...
>
> aaa,bbb,ccc,ddd,eee,fff,ggg
>
> I want the string "aaa,bbb,ccc".
select array_to_string
(
(
string_to_array
(
'aaa,bbb,ccc,ddd,eee,fff,ggg',','
)
)[1:3],','
);
array_to_string
-----------------
aaa,bbb,ccc
(1 row)
HTH,
Joe
--
Joe Conway
credativ LLC: http://www.credativ.us
Linux, PostgreSQL, and general Open Source
Training, Service, Consulting, & 24x7 Support