데이터 처리 도구/SQL

[MySQL] String Functions and Operators (1)

yourhm 2022. 8. 26. 15:10

대/소문자로 변환하기

SELECT UPPER('Cherry')
-- OUTPUT: CHERRY

SELECT LOWER('Cherry')
-- OUTPUT: cherry

UPPER(컬럼명 or 문자열)

: 모든 문자를 대문자로 반환해라.

 

LOWER(컬럼명 or 문자열)

: 모든 문자를 소문자로 반환해라.

 

 

 

문자열 치환하기

SELECT REPLACE(Salary, 0, '')
FROM EMPLOYEES

REPLACE(컬럼명 or 문자열, '기존 패턴', '대체 패턴')

: 문자열에 포함된 기존 패턴을 대체 패턴으로 바꿔서 반환해라.

 

• SELECT 로 조회하는 것이므로, REPLACE 함수로 인한 데이터 변경은 없다.

 

 

 

문자열 자르기(추출하기)

LEFT('Africa', 3)         -- Afr
RIGHT('Africa', 3)        -- ica

LEFT(컬럼명 or 문자열, 길이)

: 문자열을 왼쪽에서부터 길이만큼 반환해라.

 

RIGHT(컬럼명 or 문자열, 길이)

: 문자열을 오른쪽에서부터 길이만큼 반환해라.

 

 

SUBSTRING('Africa', 2, 3) -- fri
SUBSTR('Africa', 2)       -- frica

SUBSTRING(컬럼명 or 문자열, 시작지점, 길이)

= SUBSTR(컬럼명 or 문자열, 시작지점, 길이)

: 문자열을 시작지점부터 길이만큼 반환해라. 단, 길이 미입력시 시작지점부터 문자열끝까지 반환한다.

 

 

SUBSTRING_INDEX('apple,banana,coconut,durian,fig', ',', 1)
-- apple

SUBSTRING_INDEX('apple,banana,coconut,durian,fig', ',', 2)
-- apple,banana

SUBSTRING_INDEX('apple,banana,coconut,durian,fig', ',', 3)
-- apple,banana,coconut

SUBSTRING_INDEX('apple,banana,coconut,durian,fig', ',', -1)
-- fig

SUBSTRING_INDEX('apple,banana,coconut,durian,fig', ',', -2)
-- durian,fig

SUBSTRING_INDEX(컬럼명 or 문자열, 구분자, n(= 구분자 카운트횟수))

: 문자열을 특정 구분자를 카운트하기 직전까지 반환해라.

 

- 구분자 카운트 횟수에 양수가 들어가면 구분자를 왼쪽부터 세고, 음수가 들어가면 오른쪽부터 센다.

 

 

 

[예시] 아래와 같이 구분자가 콤마 ' , ' 인 문자열이 있다고 하자.

 

a p p l e , b a n a n a , c o c o n u t , d u r i a n , f i g

 

 

Q. 왼쪽에서부터 두번째 구분자 전까지 있는 문자열을 모두 추출하고 싶다면?

SUBSTRING_INDEX('apple,banana,coconut,durian,fig', ',', 2)
👉 apple,banana

 

a p p l e , b a n a n a , c o c o n u t , d u r i a n , f i g

 

 

Q. 오른쪽에서부터 두번째 구분자 전까지 있는 문자열을 모두 추출하고 싶다면?

SUBSTRING_INDEX('apple,banana,coconut,durian,fig', ',', - 2)

👉  durian,fig

 

a p p l e , b a n a n a , c o c o n u t , d u r i a n , f i g

 

 

 

문자열 합치기 - 1

SELECT CONCAT("My","SQL")
-- OUTPUT: MySQL

SELECT CONCAT_WS(",","My","SQL")
-- OUTPUT: My,SQL

CONCAT(컬럼명 or 문자열, 컬럼명 or 문자열, ... )

: 여러개의 문자열을 차례대로 연결하여 하나의 문자열로 반환해라.

 

CONCAT_WS(구분자, 컬럼명 or 문자열, 컬럼명 or 문자열, ... )

: 여러개의 문자열을 차례대로 연결하여 하나의 문자열로 반환해라. 구분자와 함께.

 

 

문자열 합치기 - 2 (그룹별) 

SELECT class_num
     , COUNT(DISTINCT stuff) AS cnt
     , GROUP_CONCAT(DISTINCT stuff ORDER BY stuff) AS list_stuff
FROM Classroom
GROUP BY class_num
ORDER BY class_num

GROUP_CONCAT(컬럼명)

: 그룹별로 null이 아닌 값들을 연결하여 하나의 문자열로 반환해라.

 

 집계함수이므로 GROUP BY 와 함께 사용한다⭐

 함수 안에 쓸 수 있는 절은 다음과 같다.

     - DISTINCT

     - ORDER BY

     - SEPARATOR (default는 콤마)

 

 

 

[참고]

MySQL Documentation - Reference Manual (string-functions)

https://dev.mysql.com/doc/refman/8.0/en/string-functions.html

 

MySQL Documentation - Reference Manual (aggregate-functions)

https://dev.mysql.com/doc/refman/5.7/en/aggregate-functions.html