To pytanie ma odpowiedź specyficzną dla bazy danych.
W przypadku korzystania z serwera SQL:
SELECT column1
, RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1) as extracted
, column3
FROM myTable
Możesz dodać CASE
oświadczenie lub użyj NULLIF()
w przypadku, gdy myślnik nie zawsze występuje:
SELECT column1
, CASE WHEN column2 LIKE '%-%' THEN RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1)
END as extracted
, column3
FROM myTable
Lub:
SELECT column1
, RIGHT(column2,NULLIF(CHARINDEX('-',REVERSE(column2)),0)-1) as extracted
, column3
FROM myTable
Jeśli używasz MySQL po prostu zmień CHARINDEX()
do LOCATE()
. Wierzę, że Oracle to INSTR()
a pierwsze dwa parametry są przełączane, najpierw jest ciąg, w którym szukasz, a następnie ciąg, którego szukasz.