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.