I have a column of values where some values contain brackets with text which I would like to remove. This is an example of what I have and what I want:
CREATE TABLE test (column_i_have varchar(50), column_i_want varchar(50)) INSERT INTO test (column_i_have, column_i_want) VALUES ('hospital (PWD)', 'hopistal'), ('nursing (LLC)','nursing'), ('longterm (AT)', 'longterm'), ('inpatient', 'inpatient')
I have only come across approaches that use the number of characters or the position to trim the string, but these values have varying lengths. One way I was thinking was something like:
TRIM('(*',col1)
Doesn’t work. Is there a way to do this in postgres SQL without using the position? THANK YOU!
Advertisement
Answer
If all the values contain “valid” brackets, then you may use split_part function without any regular expressions:
select test.*, trim(split_part(column_i_have, '(', 1)) as res from testcolumn_i_have | column_i_want | res :------------- | :------------ | :-------- hospital (PWD) | hopistal | hospital nursing (LLC) | nursing | nursing longterm (AT) | longterm | longterm inpatient | inpatient | inpatient
db<>fiddle here