6장_SQL 연산자와 함수
SQL 연산자
|| - 두 문자를 결합함
SELECT 'A' || 'B'
FROM dual; // 임시 테이블
SQL 함수
built-in 함수 - 이미 만들어둔 함 수
숫자형 함수
함수명 | 기능 | 사용예 | 결과 값 |
---|---|---|---|
ABS | 절대값을 반환합니다. | SELECT ABS(-123); | 123 |
ROUND | 숫자를 반올림합니다. | SELECT ROUND(123.4567, 2); | 123.46 |
CEIL | 숫자를 올림합니다. | SELECT CEIL(123.4567); | 124 |
FLOOR | 숫자를 내림합니다. | SELECT FLOOR(123.4567); | 123 |
POWER | 숫자의 거듭제곱 값을 반환합니다. | SELECT POWER(2, 3); | 8 |
SQRT | 숫자의 제곱근을 반환합니다. | SELECT SQRT(16); | 4 |
MOD | 나머지 값을 반환합니다. | SELECT MOD(10, 3); | 1 |
문자형 함수
함수명 | 기능 | 사용예 | 결과 값 |
---|---|---|---|
UPPER | 문자열을 대문자로 변환합니다. | SELECT UPPER('Hello'); | 'HELLO' |
LOWER | 문자열을 소문자로 변환합니다. | SELECT LOWER('HELLO'); | 'hello' |
TRIM | 문자열의 앞뒤 공백을 제거합니다. | SELECT TRIM(' Hello '); | 'Hello' |
SUBSTR | 문자열의 일부를 추출합니다. | SELECT SUBSTR('Hello', 2, 3); | 'ell' |
CONCAT | 하나 이상의 문자열을 결합합니다. | SELECT CONCAT('Hello', ' ', 'World'); | 'Hello World' |
- CONCAT, SUBSTR, TRIM을 많이씀
- 그중 SUBSTR을 가장 많이 사용
숫자형 데이터를 반환하는 문자형 함수
- LENGTH, INSTR 함수 많이 사용
함수명 | 기능 | 사용예 | 결과 값 |
---|---|---|---|
ASCII | 문자의 ASCII 코드 값을 반환합니다. | SELECT ASCII('A') FROM DUAL; | 65 |
CHAR_LENGTH | 문자열의 길이를 반환합니다. | SELECT CHAR_LENGTH('Hello') FROM DUAL; | 5 |
LENGTH | 문자열의 길이를 반환합니다. | SELECT LENGTH('Hello') FROM DUAL; | 5 |
INSTR | 하나의 문자열 내에서 다른 문자열의 위치를 반환합니다. | SELECT INSTR('Hello', 'e') FROM DUAL; | 2 |
날짜형 함수
함수명 | 기능 | 사용예 | 결과 값 |
---|---|---|---|
NOW | 현재 날짜와 시간을 반환합니다. | SELECT NOW(); | 현재 날짜와 시간 |
CURDATE | 현재 날짜를 반환합니다. | SELECT CURDATE(); | 현재 날짜 |
DATE_ADD | 날짜에 특정 기간을 더합니다. | SELECT DATE_ADD('2020-01-01', INTERVAL 1 DAY); | 2020-01-02 |
형변환 함수
함수명 | 기능 | 사용예 | 결과 값 |
---|---|---|---|
TO_NUMBER | 문자열을 숫자로 변환합니다. | SELECT TO_NUMBER('123.45', '999.99') FROM DUAL; | 123.45 |
TO_CHAR | 숫자나 날짜를 문자열로 변환합니다. | SELECT TO_CHAR(123.45, '999.99') FROM DUAL; | '123.45' |
TO_DATE | 문자열을 날짜로 변환합니다. | SELECT TO_DATE('2023-01-01', 'YYYY-MM-DD') FROM DUAL; | 2023-01-01 |
CASE 표현식
SELECT emp_name, age
,CASE WHEN age BETWEEN 0 AND 19 THEN '10대'
WHEN age BETWEEN 20 AND 29 THEN '20대'
WHEN age BETWEEN 30 AND 39 THEN '30대'
WHEN age BETWEEN 40 AND 49 THEN '40대'
WHEN age BETWEEN 50 AND 59 THEN '50대'
ELSE '60대 이상'
END ages
FROM EMP03;