sql >> Base de Datos >  >> RDS >> Sqlserver

Extraer caracteres a la derecha de un valor delimitado en una instrucción SELECT

Esta pregunta tiene una respuesta específica de base de datos.

Si utiliza SQL Server:

SELECT column1
     , RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1) as extracted
     , column3 
FROM myTable

Puede agregar un CASE sentencia o use NULLIF() en caso de que el guión no esté siempre presente:

SELECT column1
     , CASE WHEN column2 LIKE '%-%' THEN RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1) 
           END as extracted
     , column3 
FROM myTable

O:

SELECT column1
     , RIGHT(column2,NULLIF(CHARINDEX('-',REVERSE(column2)),0)-1) as extracted
     , column3 
FROM myTable

Si usa MySQL simplemente cambie CHARINDEX() a LOCATE() . Creo que Oracle es INSTR() y los primeros dos parámetros se cambian, primero es la cadena que está buscando, luego la cadena que está buscando.