SQLD 자격증 대비: 문자형, 숫자형, 날짜 함수 학습하기
SQL(Structured Query Language)에서 함수(Function)는 데이터를 가공하거나 변환하는 데 사용됩니다.
SQLD 자격증에서는 문자형 함수, 숫자형 함수, 날짜 함수와 같은
데이터 처리 함수가 자주 출제되므로 이를 이해하고 활용하는 것이 중요합니다.
이번 글에서는 오라클(Oracle), MySQL, SQL Server에서 사용하는 함수와 쿼리 작성법을 예제로 설명하겠습니다.
1. 문자형 함수 (String Functions)
문자형 함수는 문자열 데이터를 조작하거나 변환하는 데 사용됩니다.
자주 쓰이는 문자형 함수로는 UPPER, LOWER, CONCAT, LENGTH(LEN), SUBSTR(SUBSTRING) 등이 있습니다.
1-1. 대소문자 변환 함수: UPPER, LOWER
- UPPER: 문자열을 대문자로 변환.
- LOWER: 문자열을 소문자로 변환.
Oracle
SELECT UPPER('sql study') AS UpperCase, LOWER('SQL STUDY') AS LowerCase FROM DUAL;
MySQL
SELECT UPPER('sql study') AS UpperCase, LOWER('SQL STUDY') AS LowerCase;
SQL Server
SELECT UPPER('sql study') AS UpperCase, LOWER('SQL STUDY') AS LowerCase;
출력 결과
UpperCase | LowerCase |
SQL STUDY | sql study |
1-2. 문자열 결합 함수: CONCAT
- CONCAT: 두 개 이상의 문자열을 하나로 결합.
Oracle
SELECT CONCAT('Hello', ' ', 'World') AS Concatenated FROM DUAL;
MySQL
SELECT CONCAT('Hello', ' ', 'World') AS Concatenated;
SQL Server
SELECT 'Hello' + ' ' + 'World' AS Concatenated;
출력 결과
Concatenated |
Hello World |
1-3. 문자열 길이 함수: LENGTH, LEN
- LENGTH(Oracle, MySQL): 문자열의 길이를 반환.
- LEN(SQL Server): 문자열의 길이를 반환.
Oracle
SELECT LENGTH('SQL Study') AS StringLength FROM DUAL;
MySQL
SELECT LENGTH('SQL Study') AS StringLength;
SQL Server
SELECT LEN('SQL Study') AS StringLength;
출력 결과
StringLength |
9 |
1-4. 문자열 추출 함수: SUBSTR, SUBSTRING
- SUBSTR(Oracle, MySQL) / SUBSTRING(SQL Server): 문자열의 특정 부분을 추출.
Oracle
SELECT SUBSTR('SQL Study', 5, 5) AS SubString FROM DUAL;
MySQL
SELECT SUBSTR('SQL Study', 5, 5) AS SubString;
SQL Server
SELECT SUBSTRING('SQL Study', 5, 5) AS SubString;
출력 결과
SubString |
Study |
2. 숫자형 함수 (Numeric Functions)
숫자형 함수는 숫자 데이터를 변환하거나 계산할 때 사용됩니다.
자주 사용하는 함수로는 ROUND, TRUNC, MOD, CEIL, FLOOR 등이 있습니다.
2-1. 숫자 반올림 함수: ROUND
- ROUND: 지정한 자릿수까지 숫자를 반올림.
Oracle
SELECT ROUND(123.456, 2) AS RoundedValue FROM DUAL;
MySQL
SELECT ROUND(123.456, 2) AS RoundedValue;
SQL Server
SELECT ROUND(123.456, 2) AS RoundedValue;
출력 결과
RoundedValue |
123.46 |
2-2. 숫자 버림 함수: TRUNC
- TRUNC: 지정한 자릿수 이하를 버림.
(※ SQL Server는 ROUND 함수에서 function 매개변수로 대체 가능)
Oracle
SELECT TRUNC(123.456, 2) AS TruncatedValue FROM DUAL;
MySQL
SELECT TRUNCATE(123.456, 2) AS TruncatedValue;
SQL Server
SELECT ROUND(123.456, 2, 1) AS TruncatedValue; -- 1은 버림을 의미
출력 결과
TruncatedValue |
123.45 |
2-3. 나머지 계산 함수: MOD
- MOD: 두 숫자를 나누고 나머지를 반환.
Oracle
SELECT MOD(10, 3) AS Remainder FROM DUAL;
MySQL
SELECT 10 % 3 AS Remainder;
SQL Server
SELECT 10 % 3 AS Remainder;
출력 결과
Remainder |
1 |
3. 날짜 함수 (Date Functions)
날짜 함수는 날짜 데이터를 처리하거나 변환하는 데 사용됩니다.
주요 함수로는 SYSDATE, NOW, GETDATE, ADD_MONTHS, DATE_ADD, DATEDIFF 등이 있습니다.
3-1. 현재 날짜와 시간 가져오기
- SYSDATE(Oracle), NOW(MySQL), GETDATE(SQL Server): 현재 날짜와 시간을 반환.
Oracle
SELECT SYSDATE AS CurrentDate FROM DUAL;
MySQL
SELECT NOW() AS CurrentDate;
SQL Server
SELECT GETDATE() AS CurrentDate;
출력 결과
CurrentDate |
2025-01-24 14:30:00 |
3-2. 날짜에 특정 기간 추가
- ADD_MONTHS(Oracle), DATE_ADD(MySQL), DATEADD(SQL Server): 날짜에 특정 기간을 더합니다.
Oracle
SELECT ADD_MONTHS(SYSDATE, 3) AS NewDate FROM DUAL;
MySQL
SELECT DATE_ADD(NOW(), INTERVAL 3 MONTH) AS NewDate;
SQL Server
SELECT DATEADD(MONTH, 3, GETDATE()) AS NewDate;
출력 결과
NewDate |
2025-04-24 14:30:00 |
3-3. 두 날짜 간의 차이 계산
- DATEDIFF: 두 날짜 간의 차이를 계산.
Oracle
SELECT TRUNC(SYSDATE) - TO_DATE('2025-01-01', 'YYYY-MM-DD') AS DaysDifference FROM DUAL;
MySQL
SELECT DATEDIFF(NOW(), '2025-01-01') AS DaysDifference;
SQL Server
SELECT DATEDIFF(DAY, '2025-01-01', GETDATE()) AS DaysDifference;
출력 결과
DaysDifference |
23 |
5. 결론
문자형, 숫자형, 날짜 함수는 데이터 처리에서 필수적인 도구이며, SQLD 자격증에서도 중요한 부분을 차지합니다.
오라클, MySQL, SQL Server는 함수 사용법에서 약간의 차이가 있으므로
각 DBMS에 맞는 문법을 익히는 것이 중요합니다.
이번 글에서 소개한 함수들을 연습하며,
함수 사용 능력을 키워 SQLD 시험 대비는 물론 실무에서도 활용할 수 있길 바랍니다.