본문 바로가기

MYSQL

MYSQL 문자열 함수 정리

1. 문자열 변환 함수

프로그래머스 “이름에 el이 들어가는 동물 찾기” 문제를 사용하여 정리했습니다.

함수 설명

CONCAT(X1, X2, …) 문장열을 이이서 반환
CONCAT_WS(구분자, X1, X2, ..) 문자열을 구분자와 함께 이어서 반환
INSERT(기존 문자열, 위치, 길이, 바꿀 문자열) 기존 문자열에서 위치부터 길이 까지의 문자를 삭제한 뒤 바꿀 문자열을 삽입 후 반환
UCASE(X1), UPPER(X1) 소문자 → 대문자
LCASE(X1), LOWER(X1) 대문자 → 소문자
LPAD/RPAD(기존 문자열, 길이, 채울 문자열) 기존 문자열 왼쪽/오른쪽을 길이만큼 채울 문자열로 더해서 반환
LTRIM/RTRIM(X1) 왼쪽/ 오른쪽의 공백 제거(중간 공백은 제거 불가)
REPLACE(기존 문자열, 대상, 바꿀 문자열) 기존 문자열에서 대상을 찾아 바꿀 문자열로 변환

 

1.1 CONCAT

  • 문자열을 이어서 반환
-- CONCAT(컬럼, X1, X2, ...)
SELECT CONCAT(NAME, " 입니다.")
FROM ANIMAL_INS
ORDER BY NAME

 

1.2 CONCAT_WS

  • 문자열을 구분자와 함께 이어서 반환
-- CONCAT_WS(컬럼, 구분자, X1, X2, ...)
SELECT CONCAT_WS(NAME, "-" , " 입니다.")
FROM ANIMAL_INS
ORDER BY NAME

 

1.3 INSERT

  • 기존 문자열에서 위치부터 길이만큼 삭제 후 바꿀 문자열 삽입
-- INSERT(컬럼, 위치, 길이, 바꿀 문자열)
SELECT INSERT(NAME, 2, 4, "--")
FROM ANIMAL_INS
ORDER BY NAME

 

1.4 UCASE, UPPER

  • 소문자 → 대문자 변환
-- UCASE(컬럼)
-- UPPER(컬럼)
SELECT UCASE(NAME), UPPER(NAME)
FROM ANIMAL_INS
ORDER BY NAME

 

1.5 LCASE, LOWER

  • 대문자 → 소문자 변환
-- LCASE(컬럼)
-- LOWER(컬럼)
SELECT LCASE(NAME), LOWER(NAME)
FROM ANIMAL_INS
ORDER BY NAME

 

1.6 LPAD/RPAD

  • 왼쪽/오른쪽에서부터 해당 길이만큼 늘리고 빈 공간 채울 문자열 변환
-- LPAD(컬럼, 증가될 길이, 채울 문자열)
-- RPAD(컬럼, 증가될 길이, 채울 문자열)
SELECT LPAD(NAME, CHAR_LENGTH(NAME)+3, '0'), RPAD(NAME, CHAR_LENGTH(NAME)+3, '0')
FROM ANIMAL_INS
ORDER BY NAME

 

1.7 LTRIM/RTRIM

  • 문자열 왼쪽/오른쪽 공백 제거
-- LTRIM(컬럼)
-- RTRIM(컬럼)
SELECT CONCAT(" ", NAME), LTRIM(CONCAT(" ", NAME)), CONCAT(NAME, " "), RTRIM(CONCAT(NAME, " "))
FROM ANIMAL_INS
ORDER BY NAME

💡 중간 공백은 제거되지 않습니다.

 

1.8 REPLACE

  • 문자열에서 대상을 바꿀 문자열로 변환
-- REPLACE(컬럼, 대상, 바꿀 문자열)
SELECT NAME, REPLACE(NAME, 'a', '-'), LCASE(NAME), REPLACE(LCASE(NAME), 'a', '-')
FROM ANIMAL_INS
ORDER BY NAME

💡 정규식은 REGEXP_REPLACE을 사용하면 됩니다.

 

2. 문자열 위치 함수

프로그래머스 “자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기” 문제를 사용하여 정리했습니다.

함수 설명

FIELD(X, 찾는 문자열) 여러 개의 문자열 중 찾는 문자열이 있으면 몇 번째 위치인지 반환. 없는 경우는 0 반환
FIND_IN_SET(X, 찾는 문자열) 문자열 리스트(콤마로 구분) 중 찾는 문자열의 위치를 찾아서 반환. 없는 경우는 0 반환
INSTR(기존, 부분) 기존 문자열에서 부분 문자열을 찾아 그 시작 위치를 반환. 없는 경우는 0 반환
LOCATE(부분, 기존) INSTR과 동일. 단, 매개 변수만 반대
SUBSTRING(X, 시작, 길이) 문자열을 시작 위치부터 길이만큼 잘라 반환
SUBSTRING_INDEX(X, 구분자, 위치) 문자열을 구분자로 나눈 다음, 위치의 값 까지 문자열을 구함

 

2.1 FIELD

  • 여러 개의 문자열 중 찾는 문자열이 있으면 몇 번째 위치인지 반환. 없는 경우는 0 반환
-- FIELD(컬럼, 찾는 문자열, ...)
SELECT OPTIONS, FIELD('스마트키,네비게이션,열선시트', OPTIONS)
FROM CAR_RENTAL_COMPANY_CAR AS C
ORDER BY OPTIONS

 

2.2 FIND_IN_SET

  • 문자열 리스트(콤마로 구분) 중 찾는 문자열의 위치를 찾아서 반환. 없는 경우 0 반환
-- FIND_IN_SET(찾을 문자열, 기존 문자열)
SELECT OPTIONS, FIND_IN_SET('통풍시트', OPTIONS)
FROM CAR_RENTAL_COMPANY_CAR AS C
ORDER BY OPTIONS

 

2.3 INSTR

  • 기존 문자열에서 부분 문자열을 찾아 그 시작 위치를 반환. 없는 경우 0 반환
-- INSTR(기존, 부분)
SELECT OPTIONS, INSTR(OPTIONS, '통풍시트')
FROM CAR_RENTAL_COMPANY_CAR AS C
ORDER BY OPTIONS

 

2.4 LOCATE

  • INSTR과 동일. 단, 매개 변수만 반대
-- LOCATE(부분, 기존)
SELECT OPTIONS, LOCATE('통풍시트', OPTIONS)
FROM CAR_RENTAL_COMPANY_CAR AS C
ORDER BY OPTIONS

 

2.5 SUBSTRING

  • 문자열을 시작 위치부터 길이만큼 잘라 반환
-- SUBSTRING(컬럼, 시작 위치, 길이)
SELECT OPTIONS, SUBSTRING(OPTIONS, 3, 7)
FROM CAR_RENTAL_COMPANY_CAR AS C
ORDER BY OPTIONS

💡 SUBSTRING은 SUBSTR, MID와 동일

 

2.6 SUBSTRING_INDEX

  • 문자열을 구분자로 나눈 다음, 위치의 값 까지 문자열을 구함
SELECT OPTIONS, SUBSTRING_INDEX(OPTIONS, ',', 1), SUBSTRING_INDEX(OPTIONS, ',', 2)
FROM CAR_RENTAL_COMPANY_CAR AS C
ORDER BY OPTIONS

 

3. LEFT, RIGHT, MID

프로그래머스 “이름에 el이 들어가는 동물 찾기” 문제를 사용하여 정리했습니다.

함수 설명

LEFT(컬럼, 가져올 개수) 기존 문자열에서 왼쪽을 기준으로 일정 개수의 문자를 가져옴
RIGHT(컬럼, 가져올 개수) 기존 문자열에서 오른쪽을 기준으로 일정 개수의 문자를 가져옴
MID(컬럼, 시작 위치, 가져올 개수) 기존 문자열에서 시작 위치에서 부터 일정 개수의 문자를 가져옴

3.1 LEFT

  • 기존 문자열에서 왼쪽을 기준으로 일정 개수의 문자를 가져옴
-- LEFT(컬럼, 가져올 개수)
SELECT NAME, LEFT(NAME, 3)
FROM ANIMAL_INS
ORDER BY NAME

 

3.2 RIGHT

  • 기존 문자열에서 오른쪽을 기준으로 일정 개수의 문자를 가져옴
-- RIGHT(컬럼, 가져올 개수)
SELECT NAME, RIGHT(NAME, 3)
FROM ANIMAL_INS
ORDER BY NAME

 

3.3 MID

  • 기존 문자열에서 시작 위치에서 부터 일정 개수의 문자를 가져옴2. 문자열 위치 함수
-- MID(컬럼, 시작 위치, 가져올 개수)
SELECT NAME, MID(NAME, 3, 3)
FROM ANIMAL_INS
ORDER BY NAME