[SQL] T-SQL에서 문자열의 마지막 문자를 제거?
SQLT-SQL에서 문자열의 마지막 문자를 제거?
어떻게 T-SQL 문자열의 마지막 문자를 제거하는 방법은 무엇입니까?
예를 들면 :
'TEST STRING'
돌려 주다:
'TEST STRIN'
해결법
-
==============================
1.EG
EG
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
-
==============================
2.다음, 위의 방법을 사용하면 렌 () 함수에서 같은 논리를 반복해야됩니다 어떤 이유로 경우 열 로직 (다음 ... 다른 ... 끝이 때 ... 경우) 복잡하다. 같은 논리를 복제하는 것은 엉망이된다. 이 경우 다음이 지적 솔루션의 가치입니다. 이 예제는 마지막으로 불필요한 쉼표를 제거한다. 드디어 REVERSE 함수에 대한 사용을 발견했다.
다음, 위의 방법을 사용하면 렌 () 함수에서 같은 논리를 반복해야됩니다 어떤 이유로 경우 열 로직 (다음 ... 다른 ... 끝이 때 ... 경우) 복잡하다. 같은 논리를 복제하는 것은 엉망이된다. 이 경우 다음이 지적 솔루션의 가치입니다. 이 예제는 마지막으로 불필요한 쉼표를 제거한다. 드디어 REVERSE 함수에 대한 사용을 발견했다.
select reverse(stuff(reverse('a,b,c,d,'), 1, 1, ''))
-
==============================
3.이 시도:
이 시도:
select substring('test string', 1, (len('test string') - 1))
-
==============================
4.당신의 문자열이 비어있는 경우,
당신의 문자열이 비어있는 경우,
DECLARE @String VARCHAR(100) SET @String = '' SELECT LEFT(@String, LEN(@String) - 1)
다음이 코드는 오류 메시지 '잘못된 길이 매개 변수는 문자열 함수에 전달.'원인이됩니다
당신은 이런 식으로 처리 할 수 있습니다 :
SELECT LEFT(@String, NULLIF(LEN(@String)-1,-1))
항상 빈 문자열의 경우 결과를 반환하고, NULL 것입니다.
-
==============================
5.
select left('TEST STRING', len('TEST STRING')-1)
-
==============================
6.원본 텍스트 / VAR는 null 또는 비어있을 수 있습니다 :
원본 텍스트 / VAR는 null 또는 비어있을 수 있습니다 :
SELECT REVERSE (SUBSTRING (REVERSE (@a), 2, 9999))
-
==============================
7.당신의 열이 텍스트가 아닌 VARCHAR 경우, 당신은이를 사용할 수 있습니다 :
당신의 열이 텍스트가 아닌 VARCHAR 경우, 당신은이를 사용할 수 있습니다 :
SELECT SUBSTRING(@String, 1, NULLIF(DATALENGTH(@String)-1,-1))
-
==============================
8.오히려 역 다도-REVERSE의 세보다 두 단계에서이 작업을 수행하려면, 당신은 당신의 목록 구분 하나 개 또는 두 개의 공간이 될 수 있습니다. 그런 다음에 이중 공백을 대체 할 후행 공백을 트리밍하고 교체하려면 RTRIM을 사용 ','
오히려 역 다도-REVERSE의 세보다 두 단계에서이 작업을 수행하려면, 당신은 당신의 목록 구분 하나 개 또는 두 개의 공간이 될 수 있습니다. 그런 다음에 이중 공백을 대체 할 후행 공백을 트리밍하고 교체하려면 RTRIM을 사용 ','
select REPLACE(RTRIM('a b c d '),' ', ', ')
그러나, 이것은 원래의 문자열 내부 공간을 포함 할 경우 좋은 생각이 아니다.
성능에 대한 확실하지. 각 REVERSE는 문자열의 새 복사본을 만들지 만 STUFF 세 번째 빠른 교체보다.
이 참조
-
==============================
9.
@result = substring(@result, 1, (LEN(@result)-1))
-
==============================
10.나는이 -hack-을 제안 할 수 있습니다).
나는이 -hack-을 제안 할 수 있습니다).
select left(txt, abs(len(txt + ',') - 2)) from t;
SQL 서버 바이올린 데모
-
==============================
11.당신은 함수를 만들 수 있습니다
당신은 함수를 만들 수 있습니다
CREATE FUNCTION [dbo].[TRUNCRIGHT] (@string NVARCHAR(max), @len int = 1) RETURNS NVARCHAR(max) AS BEGIN IF LEN(@string)<@len RETURN '' RETURN LEFT(@string, LEN(@string) - @len) END
-
==============================
12.이 시도
이 시도
DECLARE @String VARCHAR(100) SET @String = 'TEST STRING' SELECT LEFT(@String, LEN(@String) - 1) AS MyTrimmedColumn
-
==============================
13.마지막 문자를 가져옵니다
마지막 문자를 가져옵니다
Right(@string, len(@String) - (len(@String) - 1))
-
==============================
14.내 대답은 허용 대답과 비슷하지만 널 확인하고 문자열을 비 웁니다.
내 대답은 허용 대답과 비슷하지만 널 확인하고 문자열을 비 웁니다.
DECLARE @String VARCHAR(100) SET @String = 'asdfsdf1' -- If string is null return null, else if string is empty return as it is, else 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
-
==============================
15.이것은 아주 늦게, 그러나 흥미롭게도 아직 언급하지 않았다.
이것은 아주 늦게, 그러나 흥미롭게도 아직 언급하지 않았다.
select stuff(x,len(x),1,'')
즉 :
take a string x go to its last character remove one character add nothing
-
==============================
16.나는 청구 hoenig의 대답 @ 사랑; 그러나, 나는 서브 쿼리를 사용하고 REVERSE 함수는 괄호의 두 세트를 필요로했기 때문에 나는 잡혔다. 그림 하나 개 밖에 걸 렸어요!
나는 청구 hoenig의 대답 @ 사랑; 그러나, 나는 서브 쿼리를 사용하고 REVERSE 함수는 괄호의 두 세트를 필요로했기 때문에 나는 잡혔다. 그림 하나 개 밖에 걸 렸어요!
SELECT -- Return comma delimited list of all payment reasons for this Visit REVERSE(STUFF(REVERSE(( SELECT DISTINCT CAST(CONVERT(varchar, r1.CodeID) + ' - ' + c.Name + ', ' AS VARCHAR(MAX)) FROM VisitReason r1 LEFT JOIN ReasonCode c ON c.ID = r1.ReasonCodeID WHERE p.ID = r1.PaymentID FOR XML PATH('') )), 1, 2, '')) ReasonCode FROM Payments p
-
==============================
17.특정 컬럼의 마지막 N 문자를 트리밍하여 레코드를 업데이트하려면 :
특정 컬럼의 마지막 N 문자를 트리밍하여 레코드를 업데이트하려면 :
UPDATE tablename SET columnName = LEFT(columnName , LEN(columnName )-N) where clause
-
==============================
18.시도 해봐 :
시도 해봐 :
DECLARE @String NVARCHAR(100) SET @String = '12354851' SELECT LEFT(@String, NULLIF(LEN(@String)-1,-1))
-
==============================
19.
declare @string varchar(20)= 'TEST STRING' Select left(@string, len(@string)-1) as Tada
산출:
Tada -------------------- TEST STRIN
-
==============================
20.이 시도,
이 시도,
DECLARE @name NVARCHAR(MAX) SET @name='xxxxTHAMIZHMANI****'SELECT Substring(@name, 5, (len(@name)-8)) as UserNames
그리고 출력은 THAMIZHMANI처럼 될 것입니다
-
==============================
21.
declare @x varchar(20),@y varchar(20) select @x='sam' select case when @x is null then @y when @y is null then @x else @x+','+@y end go declare @x varchar(20),@y varchar(20) select @x='sam' --,@y='john' DECLARE @listStr VARCHAR(MAX) SELECT @listStr = COALESCE(@x + ', ' ,'') +coalesce(@y+',','') SELECT left(@listStr,len(@listStr)-1)
from https://stackoverflow.com/questions/1256915/remove-the-last-character-in-a-string-in-t-sql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 그것은 SQL 서버에 임시 테이블을 만들기위한 #을 사용할 필요가 있습니까? (0) | 2020.07.20 |
---|---|
[SQL] 어떻게 SQL 문자열의 첫 번째 문자를 얻으려면? (0) | 2020.07.20 |
[SQL] DROP IF는 VS DROP 존재? (0) | 2020.07.20 |
[SQL] 명성에 기반 권한 구현 [폐쇄] (0) | 2020.07.20 |
[SQL] 어떻게 널 (null)을 허용하지 않는 PostgreSQL 데이터베이스에 열을 추가 할 수 있습니까? (0) | 2020.07.20 |