Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Estrarre i caratteri a destra di un valore delimitato in un'istruzione SELECT

Questa domanda ha una risposta specifica per il database.

Se si utilizza SQL Server:

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

Puoi aggiungere un CASE istruzione o utilizzare NULLIF() nel caso in cui il trattino non sia sempre presente:

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

Oppure:

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

Se usi MySQL, cambia semplicemente CHARINDEX() a LOCATE() . Credo che Oracle sia INSTR() e i primi due parametri vengono scambiati, prima è la stringa in cui stai cercando, quindi la stringa che stai cercando.