SELECT 'Oracle mania',
UPPER('Oracle mania'), //대문자로
LOWER('Oracle mania'), //소문자로
INITCAP('Oracle mania') //첫글자만 대문자
FROM dual; //듀얼은 시스템에 내장되어있는 테이블이름
SELECT ename, LOWER(ename), job, INITCAP(job) FROM employee;
//출력은 Initcap, 검색은 소문자로
SELECT eno, INITCAP(ename) as "NAME", dno
FROM employee
WHERE LOWER(ename)='scott';
영문과 한글의 길이구하기
SELECT LENGTH('Oracle'), LENGTH('오라클') FROM dual;
>>>> Oracle 6, 오라클 3
영문과 한글의 바이트수 구하기 //UTF-8에서 한글은 한글자당 3바이트
SELECT LENGTHB('Oracle'), LENGTHB('오라클') FROM dual;
>>>> Oracle 6바이트, 오라클 9바이트
//문자 결합하기
SELECT CONCAT('Oracle', 'Database') FROM dual;
//문자열 일부만 추출, 첫번째문자열부터 2개
SELECT SUBSTR('Oracle', 1, 2) FROM dual;
//이름이 N으로 끝나는 사원 //-1은 끝에서부터 -1,-2,-3...
SELECT * FROM employee WHERE SUBSTR(ename, -1, 1) = 'N';
//87년도에 입사한 사원표기
SELECT * FROM employee WHERE SUBSTR(hiredate, 1, 2) = '87';
//INSTR함수로 위치찾기 //INSTR 특정문자의 위치값 //INSTRB 특정문자의 바이트위치값
SELECT INSTR('오라클', '라'), INSTRB('오라클', '클') FROM dual;
>>>>2 >>>>7
//사원검색 //R이 있는걸 먼저추출하고, 3번째시작해서 1개문자를 찾음
SELECT * FROM employee WHERE INSTR(ename, 'R', 3, 1) = 3;
R R R R R // |
1,3 => 3 첫번째에서 시작해서 3개째에 등장하는 R의 위치는 3 3,2 => 4 세번째에서 시작해서 2개째에 등장하는 R의 위치는 4 2,3 => 4 두번째에서 시작해서 3개째에 등장하는 R의 위치는 4 |
//왼쪽자리를 특정기호로 채우기 //10칸을 모두 채우게끔 왼쪽을 '*'로 채움
SELECT LPAD(salary, 10, '*') FROM employee; //왼쪽(******1580)
SELECT RPAD(salary, 10, '*') FROM employee; //오른쪽 (1580******)
//특정문자제거 //맨앞문자와 맨뒤문자만 TRIM
SELECT TRIM('O' FROM 'Oracle Database') FROM dual;
>>>>racle Database
//한쪽공백제거
SELECT LTRIM(' Oracle '), RTRIM(' Oracle ') FROM dual;
//앞뒤공백제거
SELECT TRIM(' Oracle ') FROM dual;
//반올림
SELECT ROUND(99), ROUND(98.7654), ROUND(98.7654, 1), ROUND(98.7654, 2), ROUND(98.7654, -1) FROM dual
>>99 >>99 >>98.8 >>98.77 >>100
소수점 첫째자리 = 0 소수점 둘째자리 = 1 소수점 셋째자리 = 2 일의자리 = -1 |
//버림
SELECT TRUNC(98.7654), TRUNC(98.7654, 2), TRUNC(98.7654, -1) FROM dual;
//나머지 //
SELECT MOD(31,2) FROM dual;
//날짜계산(시스템데이트)
SELECT SYSDATE-1 AS "어제", SYSDATE AS "오늘", SYSDATE+1 AS "내일" FROM dual;
//근무일수계산
SELECT ROUND(SYSDATE-hiredate) as 근무일수, hiredate FROM employee;
//입사일에서 월을 기준으로 잘라냄
SELECT hiredate, TRUNC(HIREDATE, 'MONTH') FROM employee;
//각 사원들이 근무한 개월수 구하기
SELECT ename, sysdate, hiredate, TRUNC(MONTHS_BETWEEN(SYSDATE, HIREDATE)) FROM employee;
//입사한지 6개월 지난날
SELECT ename, hiredate, ADD_MONTHS(HIREDATE, 6) FROM employee;
//오늘날짜, 토요일인 날짜 출력 //오늘을 기준으로 최초로 돌아오는 토요일
SELECT SYSDATE, NEXT_DAY(SYSDATE, '토요일') FROM dual;
//입사한 달의 마지막날 구하기
SELECT ename, hiredate, LAST_DAY(HIREDATE) FROM employee;
//형식바꾸기 //날짜함수사용
SELECT ename, hiredate, TO_CHAR(hiredate, 'YY-MM'), TO_CHAR(hiredate, 'YYYY/MM/DD DAY')
FROM employee;
// 급여앞에 통화기호 붙이기 //1,000,000,000,000,000,000 형태
SELECT ename, TO_CHAR(salary, 'L999,999') FROM employee;
//날짜형으로 변환
SELECT ename, hiredate FROM employee WHERE hiredate=TO_DATE(19810220, 'YYYYMMDD');
//숫자형태로 변환후 빼기 //(숫자, 숫자의범위형태)
SELECT TO_NUMBER('10,000,000', '999,999,999')-TO_NUMBER('50,000','999,999') FROM dual;