Esta pregunta tiene una respuesta específica de base de datos.
Si utiliza SQL Server:
SELECT column1
, RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1) as extracted
, column3
FROM myTable
Puede agregar un CASE sentencia o use NULLIF() en caso de que el guión no esté siempre presente:
SELECT column1
, CASE WHEN column2 LIKE '%-%' THEN RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1)
END as extracted
, column3
FROM myTable
O:
SELECT column1
, RIGHT(column2,NULLIF(CHARINDEX('-',REVERSE(column2)),0)-1) as extracted
, column3
FROM myTable
Si usa MySQL simplemente cambie CHARINDEX() a LOCATE() . Creo que Oracle es INSTR() y los primeros dos parámetros se cambian, primero es la cadena que está buscando, luego la cadena que está buscando.