본문 바로가기
DataBase/MySQL

[MySQL] 자주 사용하는 함수 정리 - Updatable

by 제우제우 2024. 9. 9.

목차 

수학 관련 함수 

  • 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

 

주요 형식 코드

 

W3Schools.com

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

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;