Dette spørgsmål har et databasespecifikt svar.
Hvis du bruger SQL Server:
SELECT column1
, RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1) as extracted
, column3
FROM myTable
Du kan tilføje en CASE sætning eller brug NULLIF() hvis bindestregen ikke altid er til stede:
SELECT column1
, CASE WHEN column2 LIKE '%-%' THEN RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1)
END as extracted
, column3
FROM myTable
Eller:
SELECT column1
, RIGHT(column2,NULLIF(CHARINDEX('-',REVERSE(column2)),0)-1) as extracted
, column3
FROM myTable
Hvis du bruger MySQL, skal du bare ændre CHARINDEX() til LOCATE() . Jeg tror, at Oracle er INSTR() og de første to parametre skiftes, først er det strengen du søger i, derefter strengen du søger efter.