Vervang laatste substring (MySQL)
Naar navigatie springen
Naar zoeken springen
Zie ook Functions (MySQL) & Grouping (MySQL).
Het probleem
Hoe fiets ik string
Aap, Noot, Mies
om naar
Aap, Noot & Mies
Aanvullende gegevens
Bron = grouping
Deze strings zijn de uitkomst van een grouping-operatie.
Scheidingsteken bekend
Ik weet altijd wat het scheidingsteken is, want dat bepaal ik zelf. Dat mag ook iets uniekers zijn, bv.
Aap_x_Noos_x_Mies
replace() werkt niet
Replace() vervangt alle occurences tegelijkertijd. Da's dus niet bruikbaar.
Oplossing #1
set @s = "Aap, Noot, Mies"; set @s_rechts = substring_index(@s,", ",-1); set @s_links=left(@s,length(@s)-length(@s_rechts)-2); select concat(@s_links," & ",@s_rechts);
Oplossing #2
set @s = "Aap, Noot, Mies"; select concat ( left(@s,length(@s)-length(substring_index(@s,", ",-1))-2), " & ", substring_index(@s,", ",-1) );
Oplossing #3 - Functie
CREATE DEFINER=`root`@`localhost` FUNCTION `change_last_substring` ( input_string text, separator_old tinytext, separator_new tinytext ) RETURNS text CHARSET utf8 BEGIN set @output_string= trim ( leading separator_new from concat ( left(input_string,length(input_string)-length(substring_index(input_string,separator_old,-1))-1), # last "-1": Maybe needs to be "-2" sometimes? separator_new, substring_index(input_string,separator_old,-1) ) ); RETURN @output_string; END