SUBSTRING INDEX (MySQL)
Versie door Jeroen Strompf (overleg | bijdragen) op 27 mei 2017 om 20:15 (→Begin van een string verwijderen?)
Zie ook Strings manipuleren (MySQL)
Basis
substring_index
retourneert een deel van de gegeven string, tot aan een bepaalde substring:
select substring_index("wie weet waar willem wever woont","wever",1);
Uitvoer:
wie weet waar willem
Voorbeeld: Parameter afsnoepen
select substring_index("12x34x56","x",2); -- Uitvoer: 12x34
Overige voorbeelden
-- retourneert de substring vóór de eerste 'w', dus een lege string (geen NULL) -- select substring_index("wie weet waar willem wever woont","w",1);
-- De 'w' van 'wie' is de twee instantie. Dus 'wie ' wordt gerouterneerd, etc. -- select substring_index("wie weet waar willem wever woont","w",2); wie
select substring_index("wie weet waar willem wever woont","w",3); wie weet
-- Negatieve index? Dan van rechts naar links -- select substring_index("wie weet waar willem wever woont","w",-1); oont
-- Foutmelding: De derde parameter (index) is verplicht -- select substring_index("wie weet waar willem wever woont","w"); Error Code: 1582. Incorrect parameter count in the call to native function 'substring_index'
Begin van een string verwijderen?
Dit is wat lastiger: Ik heb een verzameling van string van onderstaand format + beoogd eindresultaat:
abc_def_ghi → def_ghi def_ghi → ghi
Dus het gedeelte tot de eerste "_" moet weggelaten worden
Ik kan niet
substring_index(invoer,"_",-2)
gebruiken, omdat er soms één "_" is, en soms twee.
Wellicht kan het eenvoudiger, maar dit werkt in ieder geval (mogelijk moet rechterhaakje na 'right' op dezelfde regel):
right ( invoer, length(invoer)-length(substring_index(invoer,"_",1))-1 )