Deze vraag heeft een databasespecifiek antwoord.
Bij gebruik van SQL Server:
SELECT column1
, RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1) as extracted
, column3
FROM myTable
U kunt een CASE
. toevoegen statement of gebruik NULLIF()
voor het geval het koppelteken niet altijd aanwezig is:
SELECT column1
, CASE WHEN column2 LIKE '%-%' THEN RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1)
END as extracted
, column3
FROM myTable
Of:
SELECT column1
, RIGHT(column2,NULLIF(CHARINDEX('-',REVERSE(column2)),0)-1) as extracted
, column3
FROM myTable
Als u MySQL gebruikt, wijzigt u gewoon CHARINDEX()
naar LOCATE()
. Ik geloof dat Oracle het is INSTR()
en de eerste twee parameters worden verwisseld, eerst is het de string waarin je zoekt, dan de string waarnaar je zoekt.