[sql] T-SQL에서 문자열의 마지막 문자를 제거 하시겠습니까?

문자열에서 마지막 문자를 어떻게 제거 T-SQL합니까?

예를 들면 다음과 같습니다.

'TEST STRING'

돌려 주다:

'TEST STRIN'



답변

예 :

DECLARE @String VARCHAR(100)
SET @String = 'TEST STRING'

-- Chop off the end character
SET @String = 
     CASE @String WHEN null THEN null 
     ELSE (
         CASE LEN(@String) WHEN 0 THEN @String 
            ELSE LEFT(@String, LEN(@String) - 1) 
         END 
     ) END


SELECT @String


답변

어떤 이유로 열 논리가 복잡한 경우 (… when … then … else … end), 위의 솔루션으로 인해 len () 함수에서 동일한 논리를 반복해야합니다. 동일한 논리를 복제하면 엉망이됩니다. 이것이 사실이라면 이것은 주목할만한 해결책입니다. 이 예는 마지막 원치 않는 쉼표를 제거합니다. 마침내 REVERSE 기능을 사용했습니다.

select reverse(stuff(reverse('a,b,c,d,'), 1, 1, ''))


답변

이 시도:

select substring('test string', 1, (len('test string') - 1))


답변

줄이 비어 있으면

DECLARE @String VARCHAR(100)
SET @String = ''
SELECT LEFT(@String, LEN(@String) - 1)

이 코드는 오류 메시지 ‘하위 문자열 함수에 잘못된 길이 매개 변수가 전달되었습니다’를 발생시킵니다.

이 방법으로 처리 할 수 ​​있습니다.

SELECT LEFT(@String, NULLIF(LEN(@String)-1,-1))

빈 문자열 인 경우 항상 결과를 반환하고 NULL을 반환합니다.


답변

select left('TEST STRING', len('TEST STRING')-1)


답변

소스 텍스트 / var이 null이거나 비어있는 경우에도 작동합니다.

SELECT REVERSE(SUBSTRING(REVERSE(@a), 2, 9999))


답변

당신의 coloumn이 text아닌 varchar경우 다음을 사용할 수 있습니다.

SELECT SUBSTRING(@String, 1, NULLIF(DATALENGTH(@String)-1,-1))