SQL

[MYSQL] 데이터를 대문자와 소문자로 바꾸기

DA Damla 2022. 7. 1. 10:24

영어로 DB를 입력할 경우 대문자와 소문자로 입력된 데이터 수정이 필요한 경우가 있다.

이 경우 세 개의 함수가 필요하다.

 

1) CONCAT(str1, str2, ...)

CONCAT 함수는 두 개이상의 텍스트를 결합한다.

예를 들어 각 열에 문자가 나뉘어져서 저장되는데 CONCAT함수를 사용하면 한번에 각 열에 있는 문자들이 한 줄로 합하여 표시된다. 

SELECT CONCAT(firstname,'',lastname) AS fullname FROM users

Users table에 성과 이름이 따로 저장되어 있을 경우 CONCAT함수를 사용하여 하나의 셀에 표시할 수 있다.


2) UPPER & 3) LOWER

UPPER(column1) => 컬럼의 데이터를 대문자로 바꾸기

LOWER(column1) => 컬럼의 데이터를 소문자로 바꾸기


4) SUBSTRING

아주 유용한 함수이다.

내가 원하는 자리까지 자를 수 있다.

SUBSTRING(column1, 1, 5)

SUBSTRING(컬럼명, 표시할 내용의 시작 자리, 표시할 내용의 끝 자리)

 

Tip!

 비슷하고 유용한 함수

SUBSTRING_INDEX(column1, '@', -1)

=> 이메일 도메인정보만 출력하고 싶은 경우

이메일 데이터를 아이디와 분리하고 싶을 때 동일한 기준으로 구성된 데이터가 있다면

SUBSTRING_INDEX를 활용하여 데이터를 특정기준(@, -, ,(콤마)등)으로 잘라서 원하는 데이터 출력이 가능하다.


만약 이런 이런 데이터가 있다면 (거의 이렇게 만들지 않겠지만)

테이블 명: table1

ID name
1 tOM
2 jASON

1. substring 을 활용하여 대문자와 소문자로 바꾸고자하는 자리수를 지정한다.

SUBSTRING(name,1,1) / SUBSTRING(name,2)

2. 각 SUBSTRING 절을 UPPER 과 LOWER로 감싼다.

3. CONCAT 함수를 활용하여 두개로 나뉜 데이터를 합하고 이것에 별칭을 부여한다.

 

▶ 이 단계를 거쳐 도출된 SQL쿼리문

SELECT CONCAT(UPPER(SUBSTRING(name,1,1)), LOWER(SUBSTRING(name,2))) AS name
FROM table1

연습문제

Leetcode 1667번 Fix Names In a Table 문제를 위 함수들을 활용하여 풀 수 있다.

 

답안

SELECT user_id
     , CONCAT(UPPER(SUBSTRING(name,1,1)),LOWER(SUBSTRING(name,2))) AS name
FROM users