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