본문 바로가기
데이터베이스[DB]/MSSQL

[MS-SQL] LEFT,RIGHT,SUBSTRING, LEN - 문자열함수

by 낭만의개꿈 2025. 3. 25.

 

오늘은 한번 알아두면 너무 자주 사용해서 절대 잊을 수 없는 간단한 문자열 함수에 대해서 알아보도록 하자. 정말 많이 사용하기 때문에 자연스럽게 외울 수밖에 없는 기본 함수들이다.

Table Create
CREATE TABLE #tmp_string
(
	temp_seq int,
	temp_string varchar(200)
)

INSERT INTO #tmp_string VALUES (1,'동해물과 백두산이 마르고 닳도록')
INSERT INTO #tmp_string VALUES (2,'카네기 인간관계론')
INSERT INTO #tmp_string VALUES (3,'독서를 열심히 생활화하는 습관을 기릅시다.')

SELECT * FROM #tmp_string

 

#tmp_string 조회

 

LEFT, RIGHT, SUBSTRING
  • LEFT : 문자열 왼쪽에서부터 지정된 길이만큼 잘라서 반환
  • RIGHT : 문자열 오른쪽에서부터 지정된 길이만큼 잘라서 반환
  • SUBSTRING : 문자열에서 지정된 위치부터 지정된 길이만큼 잘라서 반환
/*
동해물과 백두산이 마르고 닳도록
카네기 인간관계론
독서를 열심히 생활화하는 습관을 기릅시다.
*/

SELECT LEFT(temp_string, 5) AS LEFT_STRING,
	   RIGHT(temp_string, 5) AS RIGHT_STRING, 
	   SUBSTRING(temp_string, 5, 6) AS STR_STRING
  FROM #tmp_string

 

left, right, substring 결과조회

 

LEFT(5) 를 통해서 우리는 문자열 왼쪽에서부터 5자리를 가져왔다. ( 동해물과 , 카네기 인, 독서를 열 )

RIGHT((5)를 통해서 우리는 문자열 오른쪽에서부터 5자리를 가져왔다. ( 고 닳도로, 인간관계론, 기릅시다. )

보이는 것과 같이 공백을 자릿수로 포함하기 때문에 공백을 포함한 [ 동해물과 ] 라고 글자는 4자리로 보이지만 동해물과 다음 공백이 포함되어 표기되고 있는 것이다. 이는 LEFT, RIGHT, SUBSTRING 모두 동일하다.

 

SUBSTRING(문자열, 5, 6) 을 통해서 문자열 5번째에서 6자리를 가져왔다. (  백두산이 , 인간관례론 , 열심히 생활 )

SUBSTRING 도 위 설명과 같이 공백을 포함하여 표기하기 때문에 백두산이라고 4자리로 보이지만 앞,뒤 공백을 포함한 [ 백두산이 ] 6자리를 가지고 있다.

 

LEN
  • 문자열의 길이를 반환
  • 후행 공백을 제외하고 지정된 문자열 식의 문자 수를 반환
/*
동해물과 백두산이 마르고 닳도록
카네기 인간관계론
독서를 열심히 생활화하는 습관을 기릅시다.
*/

SELECT LEFT_STRING, LEN(LEFT_STRING), RIGHT_STRING, LEN(RIGHT_STRING), STR_STRING, LEN(STR_STRING)
FROM (
		SELECT LEFT(temp_string, 5) AS LEFT_STRING,
			   RIGHT(temp_string, 5) AS RIGHT_STRING, 
			   SUBSTRING(temp_string, 5, 6) AS STR_STRING
		  FROM #tmp_string
	) AS A

 

LEN 결과값 조회

 

LEN 은 문자열 길이값을 반환하는 함수이다.

LEFT(temp_string, 5) 를 했는데 첫번째 로우의 결과값이 [4] 로 표기된다. 또한 SUBSTRING(temp_string, 5, 6) 을 했는데 첫번째와 두번쨰 로우 결과값이 [5] 로 표기된다. 분명 5자리를 잘라서 표기했고, 6자리를 잘라서 표기했는데 왜 이런 결과값이 표기되는 것일까?

 

LEN 은 후행 공백을 제외하고 표기하기 때문이다. 

 

이로인해 [동해물과 ] 와 같이 뒷자리의 공백을 제외하고 4 로 표기하는 것이다. SUBSTRING 으로 처리한 [ 백두산이 ] 의 경우, 첫자리와 끝자리가 공백이지만 후행 공백만 제외하고 표기하기 때문에 [ 백두산이] 로 인식하여 5자리가 되는 것이다.