Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Extraire les caractères à droite d'une valeur délimitée dans une instruction SELECT

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.