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