2016-10-28 2 views
0

Ich habe Datenbank, wo die Namen der Benutzer ist wie diese "Ortega, Rafael", aber ich brauche es mit dem Vornamen in der ersten Position und ohne das Komma.MySQL | Update Zelle basierend auf einer Funktion

fand ich diese Funktion, die mich von einem delimemeter String lassen:

CREATE FUNCTION SPLIT_STR(
    x VARCHAR(255), 
    delim VARCHAR(12), 
    pos INT 
) 
RETURNS VARCHAR(255) 
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos), 
     LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1), 
     delim, ''); 

hier, aber ich habe stucked wenn ich die UPDATE-Abfrage

UPDATE `names_table` set `name` = CONCAT(
    SPLIT_STR(
     SELECT `name` FROM `names_table` WHERE <I need help here>, 
     ',', 
     1 
    ), 
    " ", 
    SPLIT_STR(
     SELECT `name` FROM `names_table` WHERE <I need help here>, 
     ',', 
     2 
    ), 

Antwort

2

Nur substring_index() verwenden zu schreiben versucht:

update names_table 
    set name = concat_ws(' ', 
         trim(substring_index(name, ',', -1)), 
         trim(substring_index(name, ',', 1)) 
         ) 
    where name like '%,%'; 

Ich bin nicht sicher, warum Sie eine andere Funktion erfinden würden, um dies zu tun.

+0

WOW, mein Schlechter ... ich hatte keine Kenntnis der Funktion substring_index, also googelte ich dafür und jemand sagte, dass Sie die Funktion selbst erstellen mussten. ICH DANKE DIR SEHR!! – Izuzvo

Verwandte Themen