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.