목차
수학 관련 함수
- ROUND()
- FLOOR()
날짜(시간) 관련 함수
- DATEDIFF()
- DATEFORMAT()
- NOW()
- CURDATE()
- CURTIME()
- DATE_ADD()
- DATE_SUB()
- YEAR(), MONTH(), DAY()
- DAYOFWEEK()
- DAYOFYEAR()
- WEEK()
- RELACE()
문자열 관련 함수
- LIKE()
- INSTR()
- REGEXP - 정규식
- LEFT(), RIGHT()
- SUBSTRING()
- LENGTH()
- CONCAT()
- TRIM()
- LPAD(), RPAD()
- UPPER(), LOWER()
- FORMAT()
타입 변환 함수
- CAST(), CONVERT()
수학 관련 함수
★ ROUND()
설명: 반올림 함수
사용법
ROUND(숫자, 원하는 소수점 아래 길이)
EX)
사용: ROUND(1.535, 2)
결과: 1.54
★ FLOOR()
설명: 숫자를 내림하여 가장 가까운 정수로 변환하는 함수/ 즉, 주어진 숫자보다 크지 않은 가장 큰 정수를 반환
사용법
FLOOR(숫자)
EX)
SELECT FLOOR(5.7); -- 결과: 5
SELECT FLOOR(2.3); -- 결과: 2
SELECT FLOOR(-3.6); -- 결과: -4
날짜(시간) 관련 함수
★ DATEDIFF()
설명: 두 기간 사이의 일수 계산
특징
- 날짜 포맷에 시간이 포함되어 있는 경우, 시간은 계산에 포함하지 않는다.
- 날짜 범위에서 벗어나는 값을 입력하는 경우 NULL 반환
사용법
DATEDIFF(종료일, 시작일)
EX)
사용: DATEDIFF('2024-10-05' , '2024-10-03')
결과: 2
★ DATE_FORMAT()
설명: 특정 날짜를 지정된 형식으로 변환
사용법
DATE_FORMAT(날짜, 형식)
EX)
사용: DATE_FORMAT( '2024-10-05 14:30:00', '%Y-%m-%d')
결과: 2024-10-05
주요 형식 코드
- %Y: 4자리 연도 (예: 2024)
- %m: 2자리 월 (예: 10)
- %d: 2자리 일 (예: 05)
- %H: 2자리 시간 (24시간 형식)
- %i: 2자리 분
- %s: 2자리 초
- https://www.w3schools.com/sql/func_mysql_date_format.asp
★ NOW()
설명: 현재 날짜와 시간을 반환
사용법
NOW()
EX)
사용: NOW()
결과: '2024-09-09 12:34:56'
★ CURDATE()
설명: 현재 날짜만 반환 (시간은 제외)
사용법
CURDATE()
EX)
사용: CURDATE()
결과: '2024-09-09'
★ CURTIME()
설명: 현재 시간만 반환 (날짜는 제외)
사용법
CURTIME()
EX)
사용: CURTIME()
결과: '12:34:56'
★ DATE_ADD()
설명: 특정 날짜에 지정된 기간을 더한다.
사용법
DATE_ADD(날짜, INTERVAL 기간 단위)
EX)
사용: DATE_ADD('2024-09-09', INTERVAL 5 DAY)
결과: '2024-09-14'
★ DATE_SUB()
설명: 특정 날짜에 지정된 기간을 뺀다.
사용법
DATE_SUB (날짜, INTERVAL 기간 단위)
EX)
사용: DATE_SUB('2024-09-09', INTERVAL 5 DAY)
결과: '2024-09-04'
★ YEAR(), MONTH(), DAY()
설명: 주어진 날짜에서 각각 연도, 월, 일 정보를 반환
사용법
YEAR(날짜)
MONTH(날짜)
DAY(날짜)
EX)
사용: SELECT YEAR('2024-10-05'), MONTH('2024-10-05'), DAY('2024-10-05');
결과: 2024, 10, 5
★ DAYOFWEEK()
설명: 주어진 날짜의 요일을 숫자로 반환
특징
1: 일요일 2: 월요일 ..... 7: 토요일
사용법
DAYOFWEEK(날짜)
EX)
사용: DAYOFWEEK('2024-10-05')
결과: 7 (토요일)
★ DAYOFYEAR()
설명: 주어진 날짜가 그 해의 몇 번째 날인지 반환
사용법
DAYOFYEAR(날짜)
EX)
사용: DAYOFYEAR('2024-10-05');
결과: 279
★ WEEK()
설명: 주어진 날짜가 그 해의 몇 번째 주인지 반환합니다.
사용법
WEEK(날짜)
EX)
사용: WEEK('2024-10-05')
결과: 40 (40번째 주)
문자열 관련 함수
★ LIKE()
설명: 특정 패턴과 일치하는 문자열을 검색할 때 사용
사용법
컬럼 LIKE '패턴'
EX)
사용: OPTIONS LIKE '%가죽시트%'
- %: 0개 이상의 문자와 일치
- _: 정확히 1개의 문자와 일치
★ INSTR()
설명: 문자열 내에서 특정 패턴의 위치를 반환 / 찾는 문자열이 없으면 0을 반환
사용법
INSTR(문자열, 찾을_문자열)
EX)
사용: INSTR(OPTIONS, '통풍시트') > 0
★ REGEXP
설명: 정규 표현식을 사용하여 문자열 패턴을 일치 / 여러 패턴을 한 번에 매칭할 수 있다.
사용법
컬럼 REGEXP '패턴'
SELECT *
FROM TABLE_TEMP
WHERE OPTIONS REGEXP '통풍시트|열선시트|가죽시트'
-- REGEXP 동작 방식 LIKE로 설명
SELECT *
FROM TABLE_TEMP
WHERE
OPTIONS LIKE '%통풍시트%' OR
OPTIONS LIKE '%열선시트%' OR
OPTIONS LIKE '%가죽시트%'
그렇다면 정확하게 단어패턴을 매칭하려면 어떻게 해야할까?
EX) 정확하게 '통풍시트' 와 '열풍시트' 단어를 옵션으로 가지는 결과물을 찾고 싶다
SELECT *
FROM TABLE_TEMP
WHERE OPTIONS REGEXP '\\b통풍시트\\b|\\b열선시트\\b'
-- REGEXP 동작 방식 LIKE로 설명
SELECT *
FROM TABLE_TEMP
WHERE
OPTIONS LIKE '통풍시트' OR
OPTIONS LIKE '열선시트'
정확하게 일치하려면 단어경계(\\b) 사용
REGEXP \\b단어\\b
★ LEFT(), RIGHT()
설명: 문자열의 왼쪽 또는 오른쪽에서 지정한 개수만큼 문자를 추출
사용법
LEFT(문자열, 길이)
RIGHT(문자열, 길이)
EX)
SELECT LEFT('2024-10-05', 4); -- 결과: '2024'
SELECT RIGHT('2024-10-05', 2); -- 결과: '05'
★ SUBSTRING()
설명: 문자열의 지정된 위치에서 부분 문자열을 추출
사용법
SUBSTRING(문자열, 시작위치, 길이)
EX)
SELECT SUBSTRING('가죽시트, 통풍시트', 1, 3); -- 결과: '가죽시'
★ LENGTH()
설명: 문자열의 길이를 반환
사용법
LENGTH(문자열)
EX)
SELECT LENGTH('통풍시트'); -- 결과: 5
★ CONCAT()
설명: 두 개 이상의 문자열을 연결
사용법
CONCAT(문자열1, 문자열2, ...)
EX)
SELECT CONCAT('통풍', '시트'); -- 결과: '통풍시트'
★ REPLACE()
설명: 문자열 내에서 특정 패턴을 다른 문자열로 교체
사용법
REPLACE(문자열, 찾을_문자열, 바꿀_문자열)
EX)
SELECT REPLACE('통풍시트, 열선시트', '통풍시트', '고급시트'); -- 결과: '고급시트, 열선시트'
★ TRIM()
설명: 문자열의 앞뒤 공백이나 지정한 문자를 제거
사용법
TRIM(제거할_문자 FROM 문자열)
EX)
SELECT TRIM(' 통풍시트 '); -- 결과: '통풍시트'
★ LPAD(), RPAD()
설명: 문자열의 왼쪽 또는 오른쪽에 지정한 문자를 채워 길이를 맞춘다.
사용법
LPAD(문자열, 총길이, 채울문자)
RPAD(문자열, 총길이, 채울문자)
SELECT LPAD('시트', 5, '0'); -- 결과: '000시트'
SELECT RPAD('시트', 5, '0'); -- 결과: '시트000'
★ UPPER(), LOWER()
설명: 문자열을 대문자 또는 소문자로 변환
사용법
UPPER(문자열)
LOWER(문자열)
EX)
SELECT UPPER('asd'); -- 결과: 'ASD'
★ FORMAT()
설명: 숫자 또는 날짜 형식을 지정하여 문자열로 변환
사용법
FORMAT(숫자, 소수점_자리수)
EX)
SELECT FORMAT(12345.6789, 2); -- 결과: '12,345.68'
타입 변환 함수
★ CAST(), CONVERT()
설명: 문자에서 숫자, 정수, 실수 등으로 변환할 때 또는 숫자에서 문자로 변환할 때 많이 사용
사용법
CAST(기존 타입 AS 바꾸고 싶은 타입)
CONVERT(기존 타입, 바꾸고 싶은 타입)
EX) 문자 → 정수(SIGNED, UNSIGNED)
-- CAST 사용법
-- 문자 '123'을 정수로 변환
SELECT CAST('123' AS SIGNED) AS int_value; -- 결과: 123
-- 문자 '-123'을 정수로 변환
SELECT CAST('-123' AS SIGNED) AS int_value; -- 결과: -123
-- 문자 '123'을 부호 없는 정수로 변환
SELECT CAST('123' AS UNSIGNED) AS unsigned_value; -- 결과: 123
-- 문자 '-123'을 부호 없는 정수로 변환
SELECT CAST('-123' AS UNSIGNED) AS unsigned_value; -- 결과: 18446744073709552000
-- CONVERT: 동일한 결과 반환
-- 문자 '123'을 부호 없는 정수로 변환
SELECT CONVERT('123' , UNSIGNED) AS unsigned_value; -- 결과: 123
UNSIGNED: 부호 없는 정수
SIGNED: 부호 있는 정수
EX) 문자 → 실수(DECIMAL, FLOAT)
-- 문자 '123.45'을 CAST 사용해서 DECIMAL로 변환
SELECT CAST('123.45' AS DECIMAL(10, 3)) AS decimal_value; -- 결과: 123.450
-- 문자 '-123.45'을 CAST 사용해서 DECIMAL로 변환
SELECT CAST('-123.45' AS DECIMAL(10, 3)) AS decimal_value; -- 결과: -123.450
-- 문자 '-123.45'을 CONVERT 사용해서 DECIMAL로 변환
SELECT CONVERT('-123.45', DECIMAL(10, 2)) AS decimal_value; -- 결과: -123.45
-- 문자 '123.45'을 CAST 사용해서 FLOAT로 변환
SELECT CAST('123.45' AS FLOAT) AS float_value; -- 결과: 123.45
-- 문자 '123.45'을 CONVERT 사용해서 FLOAT로 변환
SELECT CONVERT('123.45', FLOAT) AS float_value; -- 결과: 123.45
DECIMAL 데이터 타입
- DECIMAL(Precision, Scale)
- 정밀도(Precision): 전체 자릿수
- 스케일(Scale): 소수점 이하 자릿수
- DECIMAL 타입은 정확한 소수점 계산이 필요할 때 유용하며, 특히 금융 데이터와 같이 정밀한 수치가 중요한 경우에 적합
EX) 숫자 → 문자
-- 숫자 123을 문자로 변환
SELECT CAST(123 AS CHAR) AS char_value;
-- 실수 123.45를 문자로 변환
SELECT CAST(123.45 AS CHAR) AS char_value;
-- CONVERT 사용 예시
SELECT CONVERT(123, CHAR) AS char_value;
SELECT CONVERT(123.45, CHAR) AS char_value;
'DataBase > MySQL' 카테고리의 다른 글
[MySQL] 순위 함수 정리 (0) | 2024.09.15 |
---|---|
[MySQL] Common Table Expression (CTE) (0) | 2024.09.12 |
[MySQL] 실행 문제 (0) | 2024.05.21 |