Cette question a une réponse spécifique à la base de données.
Si vous utilisez SQL Server :
SELECT column1
, RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1) as extracted
, column3
FROM myTable
Vous pouvez ajouter un CASE
ou utilisez NULLIF()
au cas où le trait d'union n'est pas toujours présent :
SELECT column1
, CASE WHEN column2 LIKE '%-%' THEN RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1)
END as extracted
, column3
FROM myTable
Ou :
SELECT column1
, RIGHT(column2,NULLIF(CHARINDEX('-',REVERSE(column2)),0)-1) as extracted
, column3
FROM myTable
Si vous utilisez MySQL, modifiez simplement CHARINDEX()
à LOCATE()
. Je crois qu'Oracle c'est INSTR()
et les deux premiers paramètres sont inversés, c'est d'abord la chaîne dans laquelle vous recherchez, puis la chaîne que vous recherchez.