본문 바로가기
Database/MySQL

[Programming][MySQL] 문자열 가공하기(Feat. 카카오 주가 데이터)

by LydiaRyu 2021. 7. 26.
반응형

 

다양한 함수를 통해 문자열을 원하는 대로 가공할 수 있다.

 

  • SUBSTR / SUBSTRING
-- SUBSTR
SELECT month, substr(month, 1, 3) AS Mon
FROM kakao
GROUP BY Mon;

-- SUBSTRING
SELECT month, substring(month, 1, 3) AS Mon
FROM kakao
GROUP BY Mon;

왼쪽: SUBSTR / 오른쪽: SUBSTRING

 

SUBSTR 함수로 문자열의 원하는 부분만 출력할 수 있다.  SUBSTR(출력할 열, 시작, 끝)의 형식으로 작성한다. 월을 영어로 기재할 때, 앞의 3글자만 작성하는 경우도 많으므로 month 열(Column)에서 첫 번째부터 세 번째 글자만 출력했다.

 

SUBSTR / SUBSTING 모두 가능하다!  양쪽 결과 모두 동일하게 출력되었다.

 

 

  • LOWER / UPPER
-- 소문자
SELECT month, LOWER(month) as 'lower'
FROM kakao
GROUP BY month;

-- 대문자
SELECT month, UPPER(month) as 'UPPER'
FROM kakao
GROUP BY month;

왼쪽: LOWER / 오른쪽: UPPER

 

LOWER소문자, UPPER대문자를 만드는 함수이다. month 열의 문자가 왼쪽에는 전부 소문자로 출력되었고, 오른쪽에는 모두 대문자로 출력된 것을 확인할 수 있다.

 

  • LENGTH
SELECT month, LENGTH(month) as 'Length'
FROM kakao
GROUP BY month;

 

LENGTH 문자의 길이를 세는 함수이다. 각 month의 길이를 구했더니 위와 같이 산출되었다. 

 

  • LPAD / RPAD
-- 왼쪽 채우기
SELECT month, LPAD(month, 10, '*') as 'POINT'
FROM kakao
GROUP BY month;

-- 오른쪽 채우기
SELECT month, RPAD(month, 10, '*') as 'POINT'
FROM kakao
GROUP BY month;

왼쪽: LPAD / 오른쪽: RPAD

 

LPAD는 전체 글자 수 중 부족한 글자 수를 왼쪽에 추가하여 채운다는 의미이다. 쿼리와 같이 LPAD(열, 전체 글자 수, 채우려는 값)으로 작성하면 총 10자리의 글자 중 글자 수가 부족한 부분을 *으로 채운다. 

 

RPAD는 LPAD와 반대로 자릿수에서 부족한 수만큼 오른쪽에서부터 채운다. 

 

  • TRIM

TRIM함수는 공백을 제거하는 함수이다. 이를 실습해 보기 위해 kako 데이터 month 열(Column)에 좌우 양쪽에 스페이스바로 공백을 만들었다. 

 

 

 

SELECT TRIM(month_trim) AS TRIM, month 
FROM kakao_trim
GROUP BY month;

 

 

TRIM은 전체 공백을 제거하는 함수로 RAW DATA에서 있던 공백이 모두 삭제되어 출력되었다. 

 

-- 왼쪽 공백 제거
SELECT LTRIM(month_trim) AS LTRIM, month 
FROM kakao_trim
GROUP BY month;

-- 오른쪽 공백 제거
SELECT RTRIM(month_trim) AS RTRIM, month 
FROM kakao_trim
GROUP BY month;

LTRIM왼쪽 공백을 제거하는 함수이고, RTRIM오른쪽 공백을 제거하는 함수이다. 결과 값을 보면 미세하게 보이지만, 왼쪽 결과는 왼쪽에 공백 없이 붙어있고, 오른쪽 결과는 오른쪽 공백이 삭제되어 칸이 약간 더 작은 것을 확인할 수 있다. 

 

  • CONCAT
SELECT month, date,
 CONCAT(month, SUBSTR(date, -2, 2)) 
FROM kakao;

 

CONCAT은 문자를 붙여주는 함수이다. CONCAT(붙일 값 1, 붙일 값 2,...)의 형태이며, month와 date 열(Column)의 일을 붙여서 새로운 열을 생성했다. 

 

문자열 가공에 대해 더 많은 내용을 적용해 보고 싶다면, 아래 MySQL Manual에서 확인할 수 있다. 

 

MySQL :: MySQL 8.0 Reference Manual :: 12.8 String Functions and Operators

 

MySQL :: MySQL 8.0 Reference Manual :: 12.8 String Functions and Operators

12.8 String Functions and Operators Table 12.12 String Functions and Operators Name Description ASCII() Return numeric value of left-most character BIN() Return a string containing binary representation of a number BIT_LENGTH() Return length of argument

dev.mysql.com

 

728x90

댓글