2013-07-01 15 views
15

Ho un campo Char(15), in questo campo ho i dati di seguito:Come posso utilizzare le funzioni LEFT e RIGHT in SQL per ottenere gli ultimi 3 caratteri?

94342KMR 
947JCP 
7048MYC 

Ho bisogno di abbattere questo, ho bisogno di avere l'ultima DESTRA 3 caratteri e ho bisogno per ottenere ciò che è a sinistra . Il mio problema è che il codice a sinistra non è sempre la stessa lunghezza che si può vedere.

Come posso realizzare questo in SQL?

Grazie

+1

Quindi, poiché questo è un 'char (15)' quali sono i risultati attesi? Tutti gli spazi vuoti o gli ultimi 3 caratteri non vuoti? – Jodrell

+1

Indietro e sinistra – Paparazzi

+0

@KenWhite: OP utilizza ['sql-server'] (http://stackoverflow.com/questions/tagged/sql-server) non [' mysql'] (http://stackoverflow.com/questions/tag/mysql). –

risposta

14
SELECT RIGHT(RTRIM(column), 3), 
     LEFT(column, LEN(column) - 3) 
FROM table 

Usa RIGHT w/RTRIM (per evitare complicazioni con una colonna di lunghezza fissa), e LEFT accoppiato con LEN (ad afferrare solo quello che serve, esente degli ultimi 3 caratteri) .

se c'è sempre una situazione in cui la lunghezza è < = 3, probabilmente sarà necessario utilizzare un'istruzione CASE in modo che la chiamata LEFT non diventi avida.

+0

suo 'char (15)' probabilmente non comportamento desiderato http://sqlfiddle.com/ #! 6/f8e926/2 – Jodrell

+0

Grazie per la risposta. – jorame

+0

@Jodrell: Oops, hai ragione. Hai bisogno di un 'RTRIM' - buona cattura. –

2

È possibile utilizzare RTRIM o lanciare il vostro valore al VARCHAR:

SELECT RIGHT(RTRIM(Field),3), LEFT(Field,LEN(Field)-3) 

O

SELECT RIGHT(CAST(Field AS VARCHAR(15)),3), LEFT(Field,LEN(Field)-3) 
+0

sembra funzionare http://sqlfiddle.com/#!6/f8e926/3 – Jodrell

+0

@Jodrell grazie per il violino – Lamak

+0

Grazie per la risposta – jorame

1

Qui alternativa utilizzando SUBSTRING

SELECT 
      SUBSTRING([Field], LEN([Field]) - 2, 3) [Right3], 
      SUBSTRING([Field], 0, LEN([Field]) - 2) [TheRest] 
    FROM 
      [Fields] 

with fiddle

1
select right(rtrim('94342KMR'),3) 

Questo recupererà l'ultima stringa corretta.

select substring(rtrim('94342KMR'),1,len('94342KMR')-3) 

Questo recupererà i restanti caratteri.

Problemi correlati