SUBSTRING INDEX (MySQL)

Uit De Vliegende Brigade
Ga naar: navigatie, zoeken

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
)

Zie ook

Bronnen