MYSQL 함수 시리즈 1.String 함수
MySQL의 문자열 관련 함수들에 대해 알아보자
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
// reading compass
이 글과 이어지는 경로
시리즈, 카테고리, 태그 겹침, 최신도를 점수화해 가까운 글일수록 중심에 배치합니다.
댓글 남기기