2016-01-21 25 views

risposta

7
SELECT SUBSTRING(@YourString, 1, LEN(@YourString) - CHARINDEX(' ', REVERSE(@YourString))) 

Edit: Assicurarsi @YourString viene tagliato prima come Alex M ha sottolineato:

SET @YourString = LTRIM(RTRIM(@YourString)) 
+2

Questo non sostituirà semplicemente tutte le occorrenze dell'ultima parola? Stai meglio prendendo l'idea di questo e migliorandolo con qualcosa come 'SUBSTRING (stringa, 1, LEN (stringa) - charindex ('', REVERSE (stringa))' – ZLK

2
DECLARE @Sentence VARCHAR(MAX) = 'Hi This is Pavan Kumar' 

SELECT SUBSTRING(@Sentence, 1, CHARINDEX(' ', @Sentence) - 1) AS [First Word], 
     REVERSE(SUBSTRING(REVERSE(@Sentence), 1, 
       CHARINDEX(' ', REVERSE(@Sentence)) - 1)) AS [Last Word] 

enter image description here

1
DECLARE @String VARCHAR(MAX) = 'One two three four' 

SELECT LEFT(@String,LEN(@String)-CHARINDEX(' ', REVERSE(@String),0)+1) 
2

solo un'aggiunta alle risposte.

Il documento per LEN funzione in MSSQL:

LEN esclude gli spazi finali. Se quello è un problema, considerare l'utilizzo della funzione DATALENGTH (Transact-SQL) che non taglia la stringa. Se si elabora una stringa unicode, DATALENGTH restituirà il doppio del numero di caratteri.

Il problema con le risposte qui è che gli spazi finali non vengono considerati.

SELECT SUBSTRING(@YourString, 1, LEN(@YourString) - CHARINDEX(' ', REVERSE(@YourString))) 

A titolo di esempio alcuni ingressi per la risposta accettata (sopra per riferimento), che avrebbe risultati errati:

 
    INPUT  -> RESULT 
    'abcd '  -> 'abc'  --last symbol removed 
    'abcd 123 ' -> 'abcd 12' --only removed only last character 

per tenere conto dei casi di cui sopra uno avrebbe bisogno di tagliare la corda (sarebbe restituire l'ultima parola di 2 o più parole nella frase):

SELECT SUBSTRING(RTRIM(@YourString), 1, LEN(@YourString) - CHARINDEX(' ', REVERSE(RTRIM(LTRIM(@YourString))))) 

l'inversione viene tagliato in due parti, vale a spiegare i principali così come spazi precedenti.

In alternativa, è sufficiente tagliare l'ingresso stesso.

+1

Sto modificando la risposta accettata grazie per sottolineando questo –

+1

Non dovrebbe LEN (Nome) essere LEN (@YourString)? –

Problemi correlati