Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Εχω μια στηλη στην οποια εχω πολλαπλες τιμες χωρισμενες με κομμα. Και θελω να διαγραψω τα data που υπαρχουν μετα το κομμα και να κρατησω αυτα αριστερα.

πχ 

πριν: panathinaikos, olympiakos, aek 

μετα: panathinaikos 

Το select query ειναι το select split_part(team, ' , ' ,  1)  from my_table.

Δημοσ.
  1. μετονομάζεις την υπάρχουσα στήλη από team σε team_old
  2. προσθέτεις μία νέα στήλη με την ονομασία team
  3. κάνεις insert στην στήλη team ό,τι θες
  4. Ελέγχεις το αποτέλεσμα
  5. αν όλα είναι οκ, κάνεις drop την στήλη team_old
Δημοσ. (επεξεργασμένο)

https://dbfiddle.uk/?rdbms=postgres_9.6&fiddle=28d722a5436eddee3fcd9c8fdb4bbcda

-- DDL
create table test (
id serial,  
testvar varchar(512)
);

insert into test (testvar) values('panathinaikos, olympiakos, aek ');
insert into test (testvar) values('olympiakos, aek ');
insert into test (testvar) values('aek, aris ');

-- Select values
select * from test;
SELECT id,array_to_string(regexp_matches(testvar,'^([^,]+),','i'), ';') AS result from test;

-- Update
update test set testvar = t.result from (SELECT id,array_to_string(regexp_matches(testvar,'^([^,]+),','i'), ';') AS result from test) as t
where test.id = t.id;

-- test the result
select * from test;

 

Επεξ/σία από tsofras

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...