String 함수 종류

함수 설명 input output
UPPER 문자열을 대문자로 바꾼다. varchar varchar
LOWER 문자열을 소문자로 바꾼다. varchar varchar
SUBSTRING 문자열을 슬라이싱한다. varchar, int, int varchar
CONCAT 두 개 이상의 문자열을 붙인다. varchar varchar
CONCAT_WS 두 개 이상의 문자열을 구분자를 포함해 붙인다. varchar varchar
REPLACE 특정 문자열을 대치한다. varchar varchar
TRIM 문자열 양 끝의 공백 혹은 특정 문자열을 제거한다. varchar varchar
REPEAT 문자열을 n번 반복하여 출력한다. varchar, int varchar
REVERSE 문자열을 뒤집는다. varchar varchar
LOCATE 문자열 내 특정 문자 혹은 문자열의 시작 위치를 반환한다. varchar int
LEFT 문자열의 왼쪽부터 n개의 문자열을 반환한다. varchar, int varchar
RIGHT 문자열의 오른쪽부터 n개의 문자열을 반환한다. varchar, int varchar
LENGTH 문자열의 바이트 수를 반환한다. varchar int
CHAR_LENGTH 문자열의 문자 개수를 반환한다. varchar int
BIT_LENGTH 문자열의 이진 비트 수를 반환한다. varchar int


UPPER, LOWER

UPPER : 문자열을 대문자로 바꾸는 함수입니다.

1
2
SELECT UPPER('Hi my NaMe is JongYa');
-- >> HI MY NAME IS JONGYA

LOWER : 문자열을 소문자로 바꾸는 함수입니다.

1
2
SELECT LOWER('Hi my NaMe is JongYa');
-- >> hi my name is jongya


SUBSTRING

문자열을 슬라이싱합니다. SUBSTRING(문자열, 시작index, 반환할문자개수) 와 같이 사용합니다. (mysql의 index 시작은 1)

1
2
SELECT SUBSTRING('abcdefghijk', 3, 7);
-- >> cdefghi


CONCAT, CONCAT_WS

문자열을 서로 이어줍니다. 들어갈 수 있는 인자의 개수는 2개 이상, 254개 이하입니다.

1
2
3
4
SELECT CONCAT('안녕하세요', '반갑습니다');
--> 안녕하세요반갑습니다.
SELECT CONCAT('안녕하세요', '반값습니다', '세 개도 되나?', '몇 개까지 되는거지?');
--> 안녕하세요반값습니다세 개도 되나?몇 개까지 되는거지?

CONCAT_WS는 잇는 문자열들 사이에 구분자를 넣어줄 수 있습니다.

1
2
SELECT CONCAT_WS('/', '안녕하세요', '반갑습니다', '잘부탁드립니다');
-- >> 안녕하세요/반갑습니다/잘부탁드립니다

따옴표 등은 앞에 역슬래시()를 붙여줌으로써 구분자로 사용할 수 있습니다.

1
2
SELECT CONCAT_WS('\'', '안녕하세요', '반갑습니다', '잘부탁드립니다');
-- >> 안녕하세요'반갑습니다'잘부탁드립니다


REPLACE

문자열 바꾸기. 주어진 문자열 안에 특정 문자 혹은 문자열을 다른 문자 혹은 문자열로 대체합니다.

1
2
3
4
5
6
REPLACE('대상 문자열', 'target 문자열', 'change 문자열')

SELECT REPLACE('안녕하세요', '안', '강');
-- >> 강녕하세요
SELECT REPLACE('안녕하세요', '안녕', '평안');
-- >> 평안하세요


TRIM

문자열의 공백을 제거합니다.
이번 예시에서 공백의 개수를 알아보기 쉽게 출력을 따옴표(‘) 로 묶어 표현했습니다.

1
2
3
4
5
6
SELECT TRIM('  양 끝의 공백 제거  ');
-- >> '양 끝의 공백 제거'
SELECT LTRIM('  왼쪽의 공백 제거  ');
-- >> '왼쪽의 공백 제거  '
SELECT RTRIM('  오른쪽의 공백 제거  ');
-- >> '  오른쪽의 공백 제거'

또한 leading, trailing 을 이용해서 앞쪽 혹은 뒷쪽의 특정 문자를 제거할 수도 있습니다.

1
2
3
4
SELECT TRIM(leading '시작' FROM '시작시작 여기서부터 문자 시작');
-- >> ' 여기서부터 문자 시작'
SELECT TRIM(trailing '끝' FROM '여기까지가 문자의 끝 끝끝');
-- >> '여기까지가 문자의 끝 '


REPEAT

문자열을 특정 횟수 반복하여 출력합니다.

1
2
SELECT REPEAT('안녕 ', 5)
-- >> 안녕 안녕 안녕 안녕 안녕 


REVERSE

문자열을 뒤집습니다.

1
2
SELECT REVERSE('문자열을뒤집습니다.');
-- >> .다니습집뒤을열자문


LOCATE

주어진 문자열 내에서 특정 문자열을 찾고, 그 위치를 반환합니다.

1
2
3
4
5
6
LOCATE('찾을문자열', '대상문자열');

SELECT LOCATE('안', '안녕하세요 반갑습니다');
-- >> 1
SELECT LOCATE('반갑', '안녕하세요 반갑습니다');
-- >> 7

만약 찾는 문자열이 대상 문자열 안에 여러 개 있을 경우, 가장 앞쪽의 문자열 위치를 반환합니다.

1
2
SELECT LOCATE('안녕', '안녕하세요 안녕하세요'); 
-- >> 1


LEFT, RIGHT

LEFT : 주어진 문자열에서 좌측에서 n 개의 문자를 뽑습니다.

1
2
SELECT LEFT('이 문자열에서 뽑아보겠습니다.', 5);
-- >> 이 문자열

RIGHT : 주어진 문자열에서 우측에서 n 개의 문자를 뽑습니다.

1
2
SELECT RIGHT('이 문자열에서 뽑아보겠습니다.', 5);
-- >> 겠습니다.


LENGTH

함수 설명
LENGTH 문자열의 바이트 수를 반환합니다.
CHAR_LENGTH 문자열의 문자 수를 반환합니다.
BIT_LENGTH 이진 비트 수를 반환합니다.
1
2
3
4
5
6
SELECT LENGTH('안녕하세요');
-- >> 15
SELECT CHAR_LENGTH('안녕하세요');
-- >> 5
SELECT BIT_LENGTH('안녕하세요');
-- >> 120


Reference

https://dev.mysql.com/doc/refman/8.0/en/string-functions.html
https://inpa.tistory.com/entry/MYSQL-%F0%9F%93%9A-%EB%82%B4%EC%9E%A5%ED%95%A8%EC%88%98-%EC%A0%95%EB%A6%AC