Skip to content
Advertisement

Trim Intermediate spaces in a string in Postgres

In the result, want only intermediate spaces to be removed.

Need to print only first part before hypen (-) along with Percentages.

Can you please help.

Input String: AMAZON – 25%; SAP – XXXXX – 45%; MICROSOFT – XXX&YYY – 30%

Query:

SELECT 
translate(left("S_Name",POSITION(',' IN "S_Name")-1),'(,),{,},"','') as FirstPart,
translate(SUBSTRING ("S_Name",length("S_Name") -4 ,4),'(,),{,},"','')as secondpart;

Advertisement

Answer

regexp_split_to_table can be used to split the value into strings by the delimiter ;, then you can use split_part to get the first and second parts of the desired result.

Select trim(split_part(t,' - ',1)) As First,
       trim(reverse(split_part(reverse(t),' - ',1))) As Second
From regexp_split_to_table('SUCCESS FACTORS - 25%; SAP - XXXXX - 45%; MICROSOFT - XXX&YYY - 30%', ';') As t;

Data Output:

first second
SUCCESS FACTORS 25%
SAP 45%
MICROSOFT 30%
User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement