오늘은 한번 알아두면 너무 자주 사용해서 절대 잊을 수 없는 간단한 문자열 함수에 대해서 알아보도록 하자. 정말 많이 사용하기 때문에 자연스럽게 외울 수밖에 없는 기본 함수들이다.
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
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(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 은 문자열 길이값을 반환하는 함수이다.
LEFT(temp_string, 5) 를 했는데 첫번째 로우의 결과값이 [4] 로 표기된다. 또한 SUBSTRING(temp_string, 5, 6) 을 했는데 첫번째와 두번쨰 로우 결과값이 [5] 로 표기된다. 분명 5자리를 잘라서 표기했고, 6자리를 잘라서 표기했는데 왜 이런 결과값이 표기되는 것일까?
LEN 은 후행 공백을 제외하고 표기하기 때문이다.
이로인해 [동해물과 ] 와 같이 뒷자리의 공백을 제외하고 4 로 표기하는 것이다. SUBSTRING 으로 처리한 [ 백두산이 ] 의 경우, 첫자리와 끝자리가 공백이지만 후행 공백만 제외하고 표기하기 때문에 [ 백두산이] 로 인식하여 5자리가 되는 것이다.
'데이터베이스[DB] > MSSQL' 카테고리의 다른 글
[MS-SQL] DELETE, DROP, TRUNCATE (0) | 2025.04.06 |
---|---|
[MS-SQL] DATEPART, DATENAME - 일자(요일,주차,분기) 함수 (0) | 2025.03.21 |
[MS-SQL] UNION, UNION ALL (0) | 2025.03.18 |
[MS-SQL] COMMIT, ROLLBACK, BEGIN TRAN (0) | 2025.02.11 |
[MS-SQL] 테이블별 용량확인 (0) | 2025.01.18 |
[MS-SQL] TOP, WITH TIES, ROW_NUMBER (0) | 2025.01.17 |
[MS-SQL] IIF, CASE ( DECODE, CASE ) 조건문 (0) | 2025.01.15 |
[MS-SQL] 테이블생성, 컬럼생성, 컬럼수정, 컬럼삭제, 테이블명변경 ( Create table, Alter table, Modify, Rename ) (0) | 2025.01.14 |