Diese Frage hat eine datenbankspezifische Antwort.
Bei Verwendung von SQL Server:
SELECT column1
, RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1) as extracted
, column3
FROM myTable
Sie können einen CASE hinzufügen -Anweisung oder verwenden Sie NULLIF() falls der Bindestrich nicht immer vorhanden ist:
SELECT column1
, CASE WHEN column2 LIKE '%-%' THEN RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1)
END as extracted
, column3
FROM myTable
Oder:
SELECT column1
, RIGHT(column2,NULLIF(CHARINDEX('-',REVERSE(column2)),0)-1) as extracted
, column3
FROM myTable
Wenn Sie MySQL verwenden, ändern Sie einfach CHARINDEX() zu LOCATE() . Ich glaube Oracle, es ist INSTR() und die ersten beiden Parameter werden vertauscht, zuerst ist es die Zeichenfolge, in der Sie suchen, dann die Zeichenfolge, nach der Sie suchen.