Vervang laatste substring (MySQL)
Naar navigatie springen
Naar zoeken springen
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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