[MYSQL] 데이터를 대문자와 소문자로 바꾸기
영어로 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