2016-01-21 18 views

Odpowiedz

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

Edit: Upewnij @YourString przycina pierwszy jako Alex M wskazał:

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

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

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

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.

+1

Edytuję zaakceptowaną odpowiedź dziękuję za wskazując to na. –

+1

Czy LEN (Name) to LEN (@YourString)? –

Powiązane problemy