데이터로그😎

[SQL기본] 문자열 관련 함수 본문

# 1. 언어/# 1.1. SQL

[SQL기본] 문자열 관련 함수

지지킴 2023. 9. 8. 12:40

1. 문자열 추출/슬라이스

함수명 설명 예시 결과
SUBSTRING(str, pos, len) 지정 위치부터 문자열 추출 SUBSTRING('abcdef', 2, 3) 'bcd'
SUBSTR(str, pos, len) SUBSTRING과 동일 SUBSTR('abcdef', 2, 3) 'bcd'
LEFT(str, len) 왼쪽에서 N글자 추출 LEFT('abcdef', 3) 'abc'
RIGHT(str, len) 오른쪽에서 N글자 추출 RIGHT('abcdef', 2) 'ef'
SUBSTRING_INDEX(str, delim, count) 구분자로 나눈 후 일부 추출 (왼쪽부터 count, 음수면 오른쪽부터) SUBSTRING_INDEX('gigi@naver.com', '@', 1) 'gigi'

 

1.1. SUBSTR: 문자 추출 (=SUBSTRING)

  • 문자열에서 "a번째 자리" 부터 b개의 문자를 추출하고 싶을 때

 

1.2. SUBSTRING_INDEX(str, delim, count): 구분자로 나눈 후 일부만 추출

# 오른쪽 1번째 @까지 문자 추출
SELECT SUBSTRING_INDEX('gigi@naver.com', '@', -1) 
--> 결과: naver.com

# 왼쪽 1번째 @까지 문자 추출
SELECT SUBSTRING_INDEX('gigi@naver.com', '@', 1);
--> 결과: gigi

 


2. 문자열 검색/ 위치 찾기

함수명 설명 예시 결과
LOCATE(substr, str) 부분 문자열의 위치 반환 (1부터 시작) LOCATE('cd', 'abcdef') 3
INSTR(str, substr) LOCATE와 동일, 순서만 반대 INSTR('abcdef', 'cd') 3
POSITION(substr IN str) 동일 POSITION('cd' IN 'abcdef') 3

 

2.1. LOCATE() / INSTR() : 특정 부분 문자열이 '어디서 시작하는지 위치(인덱스)' 반환

SELECT LOCATE('cd', 'abcdef');   -- 결과: 3
SELECT INSTR('abcdef', 'cd');    -- 결과: 3

 


3. 문자열 치환/ 결합

함수명 설명 예시 결과
CONCAT(str1, str2, ...) 문자열 연결 CONCAT('a','b') 'ab'
REPLACE(str, from_str, to_str) 문자열 치환 REPLACE('abcabc','a','x') 'xbcxbc'
CONCAT_WS(delim, str1, str2, ...) 구분자를 포함한 연결 CONCAT_WS('-', '2023','06','01') '2023-06-01'


3.1. CONCAT(): 문자 합치기

SELECT CONCAT('Hello', ' ', 'World');  -- 결과: 'Hello World'

 

3.2. Replace: 문자 대체 (공백 제거에도 사용)

  • 문자 혹은 숫자를 다른 문자로 대체하고 싶을 때 사용
  • 문자, 숫자 모두 가능
  • 예시: IndepYear라는 컬럼에서 19라는 숫자를 ** 으로 대체해주세요.

 

 

3.2.1. REPLACE + SUBSTR : 특정 문자를 대체하고 싶을 때

  • a번째 자리에서부터 b개의 글자를 특정 문자로 치환하고 싶을 때

 



4. 문자열 길이/ 정보

함수명 설명 예시 결과
LENGTH(str) 바이트 수 반환 (한글: 3byte) LENGTH('abc') 3
CHAR_LENGTH(str) /
CHARACTER_LENGTH(str)
문자 수 반환 (한글도 1로 계산) CHAR_LENGTH('가나다') 3

5.  대소문자 변환

5.1. LOWER(), UPPER() : 소문자/대문자 변환

SELECT LOWER('ABC');   -- 결과: 'abc'
SELECT UPPER('abc');   -- 결과: 'ABC'

 


6. 공백/문자 제거

함수명 설명 예시 결과
TRIM(str) 양쪽 공백 제거 TRIM(' abc ') 'abc'
LTRIM(str) 왼쪽 공백 제거 LTRIM(' abc') 'abc'
RTRIM(str) 오른쪽 공백 제거 RTRIM('abc ') 'abc'

 

TRIM, LTRIM, RTRIM: 공백 제거

  • 공백 제거위해 사용 (문자 사이에 있는 공백은 제거하지 못하고, 왼쪽/오른쪽 끝에 있는 공백만 제거)
  • 공백을 눈으로 확인하기 위해 _(언더바)로 replace했다.
  • LTRIM을 사용했을 때 좌측 공백이 사라진 것을 볼 수 있다.

 

 


7. 기타 (LPAD, RPAD)

LPAD(문자열, 원하는 총 문자 길이, 채울 문자)

    • 원하는 글자 수 만큼 특정 문자로 자릿수를 채우고 싶을 때

 


 

'# 1. 언어 > # 1.1. SQL' 카테고리의 다른 글

[SQL기본] 윈도우 함수: RANK() OVER()  (0) 2023.11.24
[SQL기본] GROUP BY, GROUPING  (0) 2023.09.08
[SQL기본] NULL vs 공백 / NULL 대체  (0) 2023.09.08
[SQL기본] 윈도우 함수  (0) 2023.09.06
서브 쿼리  (0) 2023.09.06