tylko dodatek do odpowiedzi.
Doc do LEN
funkcji w MSSQL:
DŁ wyklucza końcowe półfabrykatów. Jeśli jest to problem, należy rozważyć użycie funkcji DATALENGTH (Transact-SQL), która nie powoduje przycięcia łańcucha. Jeśli przetwarzasz ciąg znaków Unicode, funkcja DATALENGTH zwróci dwukrotnie więcej znaków.
Problem z odpowiedziami polega na tym, że spacje końcowe nie są uwzględniane.
SELECT SUBSTRING(@YourString, 1, LEN(@YourString) - CHARINDEX(' ', REVERSE(@YourString)))
Jako przykład kilka wejść do zaakceptowanej odpowiedzi (powyżej dla odniesienia), które mają złe wyniki:
INPUT -> RESULT
'abcd ' -> 'abc' --last symbol removed
'abcd 123 ' -> 'abcd 12' --only removed only last character
celu uwzględnienia powyższych przypadkach należałoby przyciąć ciąg (to, powrót ostatnie słowo z 2 lub więcej wyrazów w zdaniu):
SELECT SUBSTRING(RTRIM(@YourString), 1, LEN(@YourString) - CHARINDEX(' ', REVERSE(RTRIM(LTRIM(@YourString)))))
odwrotna jest przycięta obustronnie, to stanowią czołowych jak i spacje.
Lub alternatywnie, wystarczy przyciąć samo wejście.
Czy to nie zastąpi wszystkich wystąpień ostatniego słowa? Lepiej odejmij od tego pomysł i ulepsz go za pomocą czegoś takiego jak SUBSTRING (string, 1, LEN (string) - charindex ('', REVERSE (string)) ' – ZLK