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.
fonte
2018-01-24 16:37:07
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