Този въпрос има специфичен за базата данни отговор.
Ако използвате SQL Server:
SELECT column1
, RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1) as extracted
, column3
FROM myTable
Можете да добавите CASE
израз или използвайте NULLIF()
в случай че тирето не винаги присъства:
SELECT column1
, CASE WHEN column2 LIKE '%-%' THEN RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1)
END as extracted
, column3
FROM myTable
Или:
SELECT column1
, RIGHT(column2,NULLIF(CHARINDEX('-',REVERSE(column2)),0)-1) as extracted
, column3
FROM myTable
Ако използвате MySQL, просто променете CHARINDEX()
към LOCATE()
. Вярвам, че Oracle е INSTR()
и първите два параметъра се превключват, първо е низът, в който търсите, след това низът, който търсите.