need substring based on delimiter

Started by Gauthier, Daveover 13 years ago2 messagesgeneral
Jump to latest
#1Gauthier, Dave
dave.gauthier@intel.com

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 :-(

#2Joe Conway
mail@joeconway.com
In reply to: Gauthier, Dave (#1)
Re: need substring based on delimiter

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