Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Extraia caracteres à direita de um valor delimitado em uma instrução SELECT


Esta pergunta tem uma resposta específica do banco de dados.

Se estiver usando o SQL Server:
SELECT column1
     , RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1) as extracted
     , column3 
FROM myTable

Você pode adicionar um CASE instrução ou use NULLIF() caso o hífen nem sempre esteja presente:
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

Se estiver usando o MySQL, basta alterar CHARINDEX() para LOCATE() . Eu acredito que Oracle é INSTR() e os dois primeiros parâmetros são trocados, primeiro é a string que você está procurando, depois a string que você está procurando.