Den här frågan har ett databasspecifikt svar.
Om du använder SQL Server:
SELECT column1
, RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1) as extracted
, column3
FROM myTable
Du kan lägga till en CASE eller använd NULLIF() om bindestrecket inte alltid finns:
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
Om du använder MySQL, ändra bara CHARINDEX() till LOCATE() . Jag tror att Oracle är INSTR() och de två första parametrarna ändras, först är det strängen du söker i, sedan strängen du söker efter.