MySQL

[MySQL ] 04. 내장함수 ( 문자,숫자,날짜 )

변쌤() 2024. 9. 28. 16:14
반응형

내장함수 , 그룹함수

 

 

형식 )

select 함수이름(컬럼이름) 
 from <테이블이름>
 [where 함수가 적용된 검색조건]

 

 

# 문자열 관련 함수 

함수 설명
LENGTH() 문자열의 길이를 반환합니다.
CHAR_LENGTH() 문자열의 문자 수를 반환합니다 (멀티바이트 문자 포함).
CONCAT() 여러 문자열을 하나의 문자열로 결합합니다.
CONCAT_WS() 지정된 구분자를 사용하여 여러 문자열을 결합합니다.
SUBSTRING() 문자열의 일부를 반환합니다.
LEFT() 문자열의 왼쪽에서 지정된 개수만큼 문자를 반환합니다.
RIGHT() 문자열의 오른쪽에서 지정된 개수만큼 문자를 반환합니다.
LOCATE() 특정 문자열이 다른 문자열 내에서 처음 등장하는 위치를 반환합니다.
POSITION() LOCATE()와 동일하게 동작합니다.
INSTR() LOCATE()와 유사하나, 조금 더 빠르게 동작합니다.
REPLACE() 문자열 내에서 특정 문자열을 다른 문자열로 대체합니다.
TRIM() 문자열 양쪽에서 공백을 제거합니다.
LTRIM() 문자열 왼쪽에서 공백을 제거합니다.
RTRIM() 문자열 오른쪽에서 공백을 제거합니다.
LPAD() 지정된 길이에 도달할 때까지 문자열 왼쪽에 문자를 추가합니다.
RPAD() 지정된 길이에 도달할 때까지 문자열 오른쪽에 문자를 추가합니다.
REPEAT() 문자열을 지정된 횟수만큼 반복합니다.
LOWER() 문자열을 소문자로 변환합니다.
UPPER() 문자열을 대문자로 변환합니다.
REVERSE() 문자열을 뒤집어서 반환합니다.
SPACE() 지정된 개수만큼의 공백을 반환합니다.
STRCMP() 두 문자열을 비교하여, 같으면 0, 첫 번째가 크면 1, 두 번째가 크면 -1을 반환합니다.

 

 

예시

함수 예시
LENGTH() SELECT LENGTH('Hello'); → 5
CHAR_LENGTH() SELECT CHAR_LENGTH('안녕하세요'); → 5
CONCAT() SELECT CONCAT('Hello', ' ', 'World'); → 'Hello World'
CONCAT_WS() SELECT CONCAT_WS('-', '2024', '10', '13'); → '2024-10-13'
SUBSTRING() SELECT SUBSTRING('Hello World', 1, 5); → 'Hello'
LEFT() SELECT LEFT('Hello', 2); → 'He'
RIGHT() SELECT RIGHT('Hello', 2); → 'lo'
LOCATE() SELECT LOCATE('World', 'Hello World'); → 7
POSITION() SELECT POSITION('World' IN 'Hello World'); → 7
INSTR() SELECT INSTR('Hello World', 'World'); → 7
REPLACE() SELECT REPLACE('Hello World', 'World', 'MySQL'); → 'Hello MySQL'
TRIM() SELECT TRIM(' Hello '); → 'Hello'
LTRIM() SELECT LTRIM(' Hello'); → 'Hello'
RTRIM() SELECT RTRIM('Hello '); → 'Hello'
LPAD() SELECT LPAD('Hello', 10, '*'); → '*****Hello'
RPAD() SELECT RPAD('Hello', 10, '*'); → 'Hello*****'
REPEAT() SELECT REPEAT('A', 3); → 'AAA'
LOWER() SELECT LOWER('HELLO'); → 'hello'
UPPER() SELECT UPPER('hello'); → 'HELLO'
REVERSE() SELECT REVERSE('Hello'); → 'olleH'
SPACE() SELECT SPACE(5); → ' ' (5개의 공백)
STRCMP() SELECT STRCMP('abc', 'abd'); → -1

 

 

CONCAT_WS 함수

문자열을 연결할 때 구분자를 지정하여 여러 열이나 문자열을 하나로 결합하는 데 사용됩니다. CONCAT_WS는 "Concatenate With Separator"의 약자로, 구분자를 중심으로 여러 값을 이어 붙입니다. 빈 문자열 또는 NULL 값은 무시됩니다.

 

CONCAT_WS(separator, str1, str2, ..., strN)

 

  • separator: 각 문자열 사이에 삽입할 구분자입니다.
  • str1, str2, ..., strN: 연결할 문자열 또는 컬럼 값들입니다.

 

SELECT CONCAT_WS('-', '2024', '10', '17') AS date;

결과: 2024-10-17

 

SELECT CONCAT_WS(' ', first_name, last_name) AS full_name
FROM employees;

각 직원의 first_name과 last_name을 공백으로 구분하여 결합한 full_name을 반환합니다.

 

 

ELT 함수

인덱스 값을 기준으로 여러 문자열 중 하나를 반환하는 함수입니다. 간단히 말해, ELT는 지정한 위치에 있는 문자열을 반환합니다. 이 함수는 1부터 시작하는 인덱스를 사용합니다.

 

ELT(index, str1, str2, ..., strN)

 

  • index: 반환할 문자열의 위치를 나타내는 1부터 시작하는 정수입니다.
  • str1, str2, ..., strN: 선택할 문자열들입니다.
SELECT ELT(2, 'apple', 'banana', 'cherry') AS result;

 

  • 결과: banana
  • 2번째 문자열인 'banana'를 반환합니다.
SELECT ELT(dayofweek(CURDATE()), 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 
'Thursday', 'Friday', 'Saturday') AS today;

 

현재 날짜에 해당하는 요일을 반환합니다. 예를 들어 오늘이 화요일이라면 결과는 Tuesday가 됩니다.

 

SELECT ELT(5, 'apple', 'banana', 'cherry') AS result;

 

  • 결과: NULL
  • 인덱스가 문자열의 개수를 초과할 경우 NULL을 반환합니다.

 

 

FIELD 함수

주어진 값이 리스트에서 나타나는 위치를 반환하는 함수입니다. 이 함수는 첫 번째 인자로 주어진 값을 두 번째 이후의 값들과 비교하여, 일치하는 값의 인덱스를 반환합니다. 이때 인덱스는 1부터 시작합니다. 만약 값이 리스트에 없다면 0을 반환합니다.

 

FIELD(value, str1, str2, ..., strN)

 

  • value: 찾고자 하는 값입니다.
  • str1, str2, ..., strN: 비교할 값들의 목록입니다.

 

SELECT FIELD('banana', 'apple', 'banana', 'cherry') AS position;

 

  • 결과: 2
  • 'banana'는 두 번째 위치에 있으므로 2를 반환합니다.

 

SELECT FIELD('orange', 'apple', 'banana', 'cherry') AS position;

 

  • 결과: 0
  • 'orange'는 리스트에 없으므로 0을 반환합니다.
SELECT FIELD(dayofweek(CURDATE()), 1, 2, 3, 4, 5, 6, 7) AS day_position;

 

현재 요일을 1부터 7까지의 값과 비교하여 그 위치를 반환합니다. 예를 들어 오늘이 화요일이라면 결과는 3이 됩니다.

 

 

INSTR 함수

특정 문자열 내에서 다른 문자열이 처음으로 등장하는 위치를 반환하는 함수입니다. 위치는 1부터 시작합니다. 만약 찾고자 하는 문자열이 존재하지 않으면 0을 반환합니다.

INSTR(string, substring)

 

  • string: 검색 대상이 되는 문자열입니다.
  • substring: string 내에서 찾고자 하는 부분 문자열입니다.

 

SELECT INSTR('hello world', 'world') AS position;

 

  • 결과: 7
  • 'world'는 'hello world' 문자열 내에서 7번째 위치에서 시작하므로 7을 반환합니다.

 

SELECT INSTR('hello world', 'bye') AS position;

 

  • 결과: 0
  • 'bye'는 'hello world'에 없기 때문에 0을 반환합니다.
SELECT INSTR('OpenAI is amazing', 'AI') AS position;

 

 

  • 결과: 5
  • 'AI'는 'OpenAI is amazing'에서 5번째 위치에 있습니다.

 

SELECT INSTR('MySQL is powerful', 'mysql') AS position;

 

  • 결과: 0
  • INSTR 함수는 대소문자를 구분하므로 'mysql'과 'MySQL'은 다르게 인식되어 0을 반환합니다.

 

 

LOCATE 함수

특정 문자열 내에서 다른 문자열이 처음으로 나타나는 위치를 반환하는 함수입니다. INSTR과 비슷하게 작동하지만, LOCATE는 세 번째 인자로 검색을 시작할 위치를 지정할 수 있다는 점에서 차이가 있습니다.

LOCATE(substring, string, [start_position])

 

  • substring: 찾고자 하는 부분 문자열입니다.
  • string: 검색 대상이 되는 문자열입니다.
  • start_position (선택 사항): 검색을 시작할 위치입니다. 생략하면 문자열의 처음부터 검색이 시작됩니다. 1부터 시작하는 인덱스를 사용합니다.

 

SELECT LOCATE('world', 'hello world') AS position;

 

  • 결과: 7
  • 'world'는 'hello world' 문자열의 7번째 위치에서 시작합니다.

 

SELECT LOCATE('is', 'This is a test', 4) AS position;

 

  • 결과: 5
  • 'is'는 'This is a test' 문자열 내에서 5번째 위치에서 처음 나타납니다. 검색을 4번째 위치부터 시작하므로 처음 나오는 'is'는 건너뜁니다.

 

SELECT LOCATE('bye', 'hello world') AS position;

 

  • 결과: 0
  • 'bye'는 'hello world'에 없으므로 0을 반환합니다.
SELECT LOCATE('mysql', 'MySQL is powerful') AS position;

 

 

  • 결과: 0
  • LOCATE 함수는 기본적으로 대소문자를 구분합니다. 'mysql'과 'MySQL'은 다르다고 인식하여 0을 반환합니다.

 

INSTR vs LOCATE

  • INSTR: LOCATE와 매우 유사하지만, 검색 시작 위치를 지정하는 옵션이 없습니다.
  • LOCATE: 세 번째 인자를 사용하여 검색을 시작할 위치를 지정할 수 있습니다.

 

LEFT 함수

문자열의 왼쪽부터 지정한 개수만큼의 문자를 반환하는 함수입니다. 문자열에서 처음부터 원하는 길이만큼 잘라낼 때 사용됩니다.

LEFT(string, length)

 

  • string: 잘라낼 대상이 되는 문자열입니다.
  • length: 반환할 문자의 개수입니다.
SELECT LEFT('OpenAI is amazing', 6) AS result;

 

  • 결과: OpenAI
  • 문자열 'OpenAI is amazing'의 왼쪽부터 6개의 문자를 반환합니다.
SELECT LEFT(NULL, 3) AS result;

 

 

입력 문자열이 NULL이면 결과도 NULL입니다.

 

SELECT LEFT(1234567890, 4) AS result;

숫자를 입력하면, MySQL은 이를 문자열로 취급하여 왼쪽 4자리를 반환합니다.

SELECT LEFT(first_name, 3) AS short_name
FROM employees;

각 직원의 first_name 컬럼에서 첫 3글자만 반환합니다. 예를 들어 'Michael'은 'Mic'가 됩니다.

 

SELECT LEFT('Data analysis', LENGTH('Data') + 1) AS result;

동적으로 길이를 계산하여 필요한 부분만 추출할 수 있습니다.

 

RIGHT 함수

문자열의 오른쪽 끝에서부터 지정한 개수만큼의 문자를 반환하는 함수입니다. 문자열의 끝에서부터 원하는 길이만큼 잘라내고 싶을 때 사용됩니다.

RIGHT(string, length)

 

  • string: 잘라낼 대상이 되는 문자열입니다.
  • length: 반환할 문자의 개수입니다.

 

SUBSTR, SUBSTRING,   MID 함수

문자열의 일부분을 추출하는 데 사용됩니다. 이 함수들은 서로 매우 유사하며, 같은 기능을 수행합니다. 차이점은 구문이 약간 다르거나 별칭처럼 사용된다는 점입니다.

 

SUBSTR / SUBSTRING

SUBSTR과 SUBSTRING은 동일하게 사용되며, 문자열의 일부분을 추출합니다. 이 함수들은 첫 번째 인덱스와 길이를 지정하여 원하는 부분을 가져올 수 있습니다.

SUBSTR(string, start_position, [length])
SUBSTRING(string, start_position, [length])

 

  • string: 추출할 대상 문자열입니다.
  • start_position: 추출을 시작할 위치입니다. 1부터 시작합니다. 음수 값일 경우, 문자열의 끝에서부터 계산됩니다.
  • length (선택 사항): 추출할 문자의 길이입니다. 생략하면 시작 위치부터 문자열의 끝까지 반환됩니다.

 

SELECT SUBSTR('OpenAI is amazing', 9, 2) AS result;

 

 

  • 결과: is
  • 9번째 위치에서 시작하여 2개의 문자를 추출합니다.

 

SELECT SUBSTRING('OpenAI is amazing', -7, 7) AS result;

 

  • 결과: amazing
  • 문자열의 끝에서부터 7번째 문자에서 시작하여 7개의 문자를 추출합니다.

 

MID

MID 함수는 SUBSTR 또는 SUBSTRING 함수와 동일한 기능을 하지만, 구문이 다릅니다. 기능은 똑같으며 시작 위치와 길이를 지정해 문자열을 추출합니다.

MID(string, start_position, length)

 

  • tring: 추출할 대상 문자열입니다.
  • start_position: 추출을 시작할 위치입니다. 1부터 시작합니다.
  • length: 추출할 문자의 길이입니다.
SELECT MID('OpenAI is amazing', 9, 2) AS result;

 

 

  • 결과: is
  • 9번째 위치에서 시작하여 2개의 문자를 추출합니다.

 

UPPER와 LOWER 함수

문자열의 대소문자를 변경하는 데 사용

 

 

LPAD와 RPAD 함수

문자열을 지정된 길이까지 왼쪽(LPAD) 또는 오른쪽(RPAD)에 특정 문자를 채워넣어 패딩하는 데 사용됩니다.

 

  • LPAD: 문자열의 왼쪽에 패딩 문자를 추가하여 지정된 길이만큼 채웁니다.
  • RPAD: 문자열의 오른쪽에 패딩 문자를 추가하여 지정된 길이만큼 채웁니다.

 

LPAD(string, length, pad_string)

 

  • string: 패딩을 추가할 대상 문자열입니다.
  • length: 최종 문자열의 전체 길이입니다.
  • pad_string: 패딩으로 채울 문자입니다. 이 문자가 반복되어 패딩을 만듭니다.

 

SELECT LPAD('hello', 10, '*') AS result;

결과: *****hello

SELECT LPAD('hello', 3, '*') AS result;

 

 

  • 결과: hel
  • 지정된 길이(3)가 원래 문자열 길이보다 짧으면 문자열을 잘라냅니다.
SELECT LPAD(123, 5, '0') AS result;

 

 

  • 결과: 00123
  • 숫자 123의 앞에 0을 추가하여 5자리 숫자로 만듭니다.

 

 

 

 

RPAD(string, length, pad_string)

 

  • string: 패딩을 추가할 대상 문자열입니다.
  • length: 최종 문자열의 전체 길이입니다.
  • pad_string: 패딩으로 채울 문자입니다. 이 문자가 반복되어 패딩을 만듭니다.

 

LTRIM, RTRIM, TRIM 함수

문자열의 양쪽 또는 특정한 쪽에서 공백이나 특정 문자를 제거하는 데 사용됩니다.

 

  • LTRIM: 문자열의 왼쪽 공백을 제거합니다.
  • RTRIM: 문자열의 오른쪽 공백을 제거합니다.
  • TRIM: 문자열의 양쪽에서 공백 또는 특정 문자를 제거합니다.

 

 

SELECT TRIM('x' FROM 'xxxhelloxxx') AS result;

 

양쪽에서 x 문자가 제거됩니다.

SELECT TRIM(LEADING '0' FROM '000123') AS result;

 

문자열의 앞쪽에서 0이 제거됩니다.

 

 

REPLACE 함수

문자열에서 특정한 부분 문자열을 다른 문자열로 교체하는 데 사용됩니다. 주어진 문자열에서 일치하는 부분 문자열을 찾아서 새로운 문자열로 바꿉니다.

REPLACE(string, search_string, replace_string)

 

 

  • string: 수정할 대상 문자열입니다.
  • search_string: 찾고자 하는 부분 문자열입니다. 이 부분 문자열을 교체합니다.
  • replace_string: search_string을 대체할 문자열입니다.

 

SELECT REPLACE('Hello World', 'World', 'MySQL') AS result;

 

  • 결과: Hello MySQL
  • 'World'라는 부분 문자열을 'MySQL'로 교체합니다.

 

 

REPEAT 함수

지정된 문자열을 반복해서 연결한 문자열을 반환하는 데 사용됩니다. 이 함수는 주어진 문자열을 지정한 횟수만큼 반복하여 하나의 긴 문자열을 만듭니다.

 

REPEAT(string, count)

 

  • string: 반복할 문자열입니다.
  • count: 문자열을 반복할 횟수입니다. 만약 count가 0이면 빈 문자열을 반환합니다.
SELECT REPEAT('MySQL', 3) AS result;

 

  • 결과: MySQLMySQLMySQL
  • 'MySQL'이라는 문자열을 3번 반복하여 연결합니다.

 

REVERSE 함수

문자열의 순서를 뒤집어서 반환하는 데 사용됩니다. 주어진 문자열을 반대로 뒤집어 새로운 문자열로 반환합니다.

REVERSE(string)

 

SELECT REVERSE('MySQL') AS result;

 

  • 결과: LQSyM
  • 'MySQL' 문자열이 뒤집혀서 반환됩니다.

 

SPACE 함수

지정된 개수만큼의 공백(스페이스) 문자를 반환하는 데 사용됩니다. 주로 출력 형식이나 문자열을 구성할 때 공백을 추가할 때 유용하게 사용됩니다.

 

 

  • SPACE 함수는 지정된 개수만큼 공백을 반환하는 함수입니다.
  • 주로 문자열 사이에 공백을 추가하거나 출력 형식을 맞추기 위해 사용됩니다.
  • count가 0이거나 음수인 경우 빈 문자열을 반환합니다.

 

 

SPACE(count)

count: 반환할 공백(스페이스)의 개수입니다. count가 0이면 빈 문자열을 반환합니다.

 

SELECT SPACE(5) AS result;

 

  • 결과: (5개의 공백)
  • 5개의 공백 문자를 반환합니다.

 

SELECT CONCAT('Hello', SPACE(3), 'World') AS result;

 

 

  • 결과: Hello World
  • 'Hello'와 'World' 사이에 3개의 공백이 추가되어 연결됩니다.

 

 

# 숫자 관련 함수 

함수 설명
ABS() 절대값을 반환합니다.
CEIL() 또는 CEILING() 주어진 숫자보다 크거나 같은 가장 작은 정수를 반환합니다.
FLOOR() 주어진 숫자보다 작거나 같은 가장 큰 정수를 반환합니다.
ROUND() 주어진 숫자를 소수점 자리수에 맞게 반올림합니다.
TRUNCATE() 주어진 숫자를 소수점 아래에서 지정된 자리수로 잘라냅니다.
MOD() 또는 % 두 숫자의 나머지를 반환합니다.
SIGN() 숫자의 부호를 반환합니다: 양수는 1, 음수는 -1, 0은 0.
POW() 또는 POWER() 주어진 숫자의 거듭제곱을 반환합니다.
SQRT() 숫자의 제곱근을 반환합니다.
EXP() 자연 로그 기반의 지수 함수를 반환합니다.
LN() 자연 로그(밑이 e인 로그)를 반환합니다.
LOG() 주어진 밑(base)으로 로그 값을 반환합니다. 기본은 자연 로그
LOG10() 밑이 10인 로그 값을 반환합니다.
RADIANS() 각도를 라디안 값으로 변환합니다.
DEGREES() 라디안을 각도로 변환합니다.
PI() 원주율 파이(π) 값을 반환합니다.
RAND() 0 이상 1 미만의 난수를 반환합니다.
GREATEST() 주어진 값 중 가장 큰 값을 반환합니다.
LEAST() 주어진 값 중 가장 작은 값을 반환합니다.
FORMAT() 숫자를 지정된 소수점 이하 자리수로 포맷팅하고, 천 단위 구분 기호를 포함한 문자열을 반환합니다.

 

예시

함수 예시
ABS() SELECT ABS(-10); → 10
CEIL() 또는 CEILING() SELECT CEIL(4.2); → 5
FLOOR() SELECT FLOOR(4.7); → 4
ROUND() SELECT ROUND(123.456, 2); → 123.46
TRUNCATE() SELECT TRUNCATE(123.456, 2); → 123.45
MOD() 또는 % SELECT MOD(10, 3); → 1
SIGN() SELECT SIGN(-5); → -1
POW() 또는 POWER() SELECT POW(2, 3); → 8
SQRT() SELECT SQRT(16); → 4
EXP() SELECT EXP(1); → 2.718281828459045
LN() SELECT LN(2.718281828459045); → 1
LOG() SELECT LOG(10, 100); → 2
LOG10() SELECT LOG10(100); → 2
RADIANS() SELECT RADIANS(180); → 3.141593
DEGREES() SELECT DEGREES(3.141593); → 180
PI() SELECT PI(); → 3.141593
RAND() SELECT RAND(); → 0.543267
GREATEST() SELECT GREATEST(2, 5, 3); → 5
LEAST() SELECT LEAST(2, 5, 3); → 2
FORMAT() SELECT FORMAT(12345.678, 2); → '12,345.68'

 

 

 

# 날짜 관련 함수 

함수 설명
NOW() 현재 날짜와 시간을 YYYY-MM-DD HH:MM:SS 형식으로 반환합니다.
CURDATE() 현재 날짜를 YYYY-MM-DD 형식으로 반환합니다.
CURTIME() 현재 시간을 HH:MM:SS 형식으로 반환합니다.
SYSDATE() 현재의 시스템 날짜와 시간을 반환합니다 (서버 타임존 기준).
DATE() 날짜 또는 날짜와 시간에서 날짜 부분만 반환합니다.
TIME() 날짜와 시간에서 시간 부분만 반환합니다.
YEAR() 날짜의 연도를 반환합니다.
MONTH() 날짜의 월을 숫자 형식으로 반환합니다.
DAY() 또는 DAYOFMONTH() 날짜의 일을 반환합니다.
HOUR() 시간 값에서 시간을 반환합니다.
MINUTE() 시간 값에서 분을 반환합니다.
SECOND() 시간 값에서 초를 반환합니다.
DAYOFWEEK() 날짜의 요일을 숫자(1=일요일, 2=월요일, ..., 7=토요일)로 반환합니다.
DAYOFYEAR() 주어진 날짜가 해당 연도의 몇 번째 날인지 반환합니다.
WEEK() 해당 날짜가 그 해의 몇 번째 주인지 반환합니다.
WEEKDAY() 날짜의 요일을 숫자(0=월요일, 1=화요일, ..., 6=일요일)로 반환합니다.
ADDDATE() 날짜에 지정된 일(day)을 더합니다.
SUBDATE() 날짜에서 지정된 일(day)을 뺍니다.
DATE_ADD() 날짜에 특정 간격을 더합니다 (일, 월, 년 등).
DATE_SUB() 날짜에서 특정 간격을 뺍니다 (일, 월, 년 등).
DATEDIFF() 두 날짜 사이의 차이를 일(day) 단위로 반환합니다.
TIMEDIFF() 두 시간 사이의 차이를 HH:MM:SS 형식으로 반환합니다.
STR_TO_DATE() 문자열을 날짜 형식으로 변환합니다.
DATE_FORMAT() 날짜를 지정된 형식으로 반환합니다.
EXTRACT() 날짜 또는 시간 값에서 특정 부분(연도, 월, 일 등)을 추출합니다.
LAST_DAY() 주어진 날짜의 마지막 날을 반환합니다.
MAKEDATE() 연도와 일수를 기반으로 날짜를 생성합니다.
MAKETIME() 시, 분, 초 값을 기반으로 시간을 생성합니다.

 

예시

함수 예시
NOW() SELECT NOW(); → '2024-10-13 15:45:30'
CURDATE() SELECT CURDATE(); → '2024-10-13'
CURTIME() SELECT CURTIME(); → '15:45:30'
SYSDATE() SELECT SYSDATE(); → '2024-10-13 15:45:31'
DATE() SELECT DATE('2024-10-13 15:45:30'); → '2024-10-13'
TIME() SELECT TIME('2024-10-13 15:45:30'); → '15:45:30'
YEAR() SELECT YEAR('2024-10-13'); → 2024
MONTH() SELECT MONTH('2024-10-13'); → 10
DAY() 또는 DAYOFMONTH() SELECT DAY('2024-10-13'); → 13
HOUR() SELECT HOUR('15:45:30'); → 15
MINUTE() SELECT MINUTE('15:45:30'); → 45
SECOND() SELECT SECOND('15:45:30'); → 30
DAYOFWEEK() SELECT DAYOFWEEK('2024-10-13'); → 1
DAYOFYEAR() SELECT DAYOFYEAR('2024-10-13'); → 287
WEEK() SELECT WEEK('2024-10-13'); → 41
WEEKDAY() SELECT WEEKDAY('2024-10-13'); → 6
ADDDATE() SELECT ADDDATE('2024-10-13', 10); → '2024-10-23'
SUBDATE() SELECT SUBDATE('2024-10-13', 10); → '2024-10-03'
DATE_ADD() SELECT DATE_ADD('2024-10-13', INTERVAL 2 MONTH); → '2024-12-13'
DATE_SUB() SELECT DATE_SUB('2024-10-13', INTERVAL 1 YEAR); → '2023-10-13'
DATEDIFF() SELECT DATEDIFF('2024-10-13', '2023-10-13'); → 365
TIMEDIFF() SELECT TIMEDIFF('15:45:30', '12:30:00'); → '03:15:30'
STR_TO_DATE() SELECT STR_TO_DATE('13-10-2024', '%d-%m-%Y'); → '2024-10-13'
DATE_FORMAT() SELECT DATE_FORMAT('2024-10-13', '%Y-%m-%d'); → '2024-10-13'
EXTRACT() SELECT EXTRACT(YEAR FROM '2024-10-13'); → 2024
LAST_DAY() SELECT LAST_DAY('2024-10-13'); → '2024-10-31'
MAKEDATE() SELECT MAKEDATE(2024, 287); → '2024-10-13'
MAKETIME() SELECT MAKETIME(15, 45, 30); → '15:45:30'

 

date_format

     
%Y 4자리 연도 2024
%y 2자리 연도 24
%M 월 이름 (영어) October
%m 2자리 월 (01부터 12) 10
%b 월 이름의 약어 Oct
%c 숫자 월 (1부터 12) 10
%D 일(day)의 서수 (1st, 2nd, 3rd 등) 13th
%d 2자리 일 (01부터 31) 13
%e 1자리 또는 2자리 일 (1부터 31) 13
%W 요일 이름 (영어) Sunday
%a 요일 이름의 약어 Sun
%w 요일을 숫자로 (0=일요일, 6=토요일) 0
%H 24시간 형식의 시간 (00부터 23) 15
%h 12시간 형식의 시간 (01부터 12) 03
%i 2자리 분 (00부터 59) 45
%s 2자리 초 (00부터 59) 30
%p AM 또는 PM PM
%r 12시간 형식의 시간 (hh:mm
 
AM/PM)
03:45:30 PM
%T 24시간 형식의 시간 (hh:mm) 15:45:30

 

IFNULL 함수

값이 NULL인지 여부를 확인하고, 만약 NULL이면 대체값을 반환하는 함수입니다. NULL이 아닐 경우 원래의 값을 그대로 반환합니다.

IFNULL(expression, alt_value)
  • expression: 검사할 값 또는 식입니다.
  • alt_value: expression이 NULL일 경우 반환할 대체 값입니다.
SELECT IFNULL(NULL, 'Default Value') AS result;

 

  • 결과: Default Value
  • NULL이므로 대체 값인 'Default Value'가 반환됩니다.
SELECT IFNULL(name, 'Unknown') AS result
FROM employees;

name 컬럼 값이 NULL인 경우 'Unknown'으로 대체되고, 그렇지 않으면 name 값이 반환됩니다.

 

NULLIF 함수

두 값을 비교하여 같으면 NULL을 반환하고, 다르면 첫 번째 값을 반환하는 함수입니다. 즉, 두 값이 동일한지 비교하는데, 동일할 경우 결과를 NULL로 바꾸고, 그렇지 않으면 첫 번째 값을 반환하는 방식입니다.

 

NULLIF(expr1, expr2)
  • expr1: 비교할 첫 번째 표현식입니다.
  • expr2: 비교할 두 번째 표현식입니다
  • expr1과 expr2가 같으면 NULL을 반환합니다.
  • expr1과 expr2가 다르면 expr1을 반환합니다.
SELECT NULLIF(5, 5) AS result;
  • 결과: NULL
  • 두 값이 같으므로 NULL을 반환합니다.
SELECT NULLIF(salary, bonus) AS result
FROM employees;

alary와 bonus가 동일하면 NULL을 반환하고, 다르면 salary를 반환합니다.

 

 

COALESCE 함수

주어진 인자 중 NULL이 아닌 첫 번째 값을 반환하는 함수입니다. 여러 개의 값을 비교할 때, 값이 NULL인 경우 대체할 값을 지정할 수 있습니다. COALESCE는 여러 값을 동시에 처리할 수 있기 때문에, 주어진 값들 중에서 가장 먼저 NULL이 아닌 값을 반환합니다.

COALESCE(value1, value2, ..., valueN)

 

  • value1, value2, ..., valueN: 비교할 여러 값들입니다. 가장 왼쪽부터 순서대로 NULL이 아닌 첫 번째 값을 반환합니다.
  • 만약 모든 값이 NULL이면 NULL을 반환합니다.
SELECT COALESCE(NULL, NULL, 'Hello', 'World') AS result;

 

 

  • 결과: 'Hello'
  • 앞의 두 값이 NULL이기 때문에, NULL이 아닌 첫 번째 값인 'Hello'를 반환합니다.

 

 

 

반응형