INSTR :
SELECT INSTR('AABAACAABBAA','B',1,2)
FROM DUAL;
2 : 2번째 순번을 찾는다.
SUBSTR과INSTR을 활용해서
-- 사원 정보 중 사원명, 이메일, 아이디 조회
-- [1] 이메일에서 '@'의 위치를 찾고 => INSTR 함수 사용
-- [2] 이메일의 컬럼의 값에서 1번째 위치부터 '@'위치(1에서 확인)전까지 추출
SELECT EMP_NAME, email, SUBSTR(email, '1',INSTR(EMAIL, '@') -1)
FROM EMPLOYEE;
-- 연결 연산자 사용해서 ?
SELECT EMP_NAME,EMP_NO,RPAD(SUBSTR(EMP_NO, 1,8),14,'*')
FROM EMPLOYEE;
LPAD(문자열|컬럼|,최종길이[, 덧붙일 문자])
RPAD(문자열|컬럼|,최종길이[, 덧붙일 문자])
REPLACE :
[표현법]
REPLACE(문자열, 찾을 문자열, 변경할 문자열)
SELECT REPLACE(EMAIL, '@or.kr' ,'@gmail.com') 이메일
FROM employee;
-- MONTHS_BETWEEN
-- 두 날짜 사이의 개월 수를 반환
-- [표현법] MONTHS_BETWEEN(날짜A, 날짜B) : 날짜A - 날짜V => 개월 수 계산
SELECT EMP_NAME, HIRE_DATE, concat(CEIL(MONTHS_BETWEEN(SYSDATE, HIRE_DATE)), '개월차') "근속개월수"
FROM employee
ORDER BY HIRE_DATE;
개월차 구하는
SELECT CEIL(MONTHS_BETWEEN(SYSDATE, '24/06/11')) || '개월차' "공부 시작한지"
FROM DUAL;
몇 개월 남았는지
SELECT CEIL(MONTHS_BETWEEN(SYSDATE, '24/06/11')) || '개월차' "공부 시작한지"
FROM DUAL;
-- [표현법] ADD_MONTHS(날짜, 더할 개월 수를 더해서 반환)
SELECT SYSDATE 현재날짜, ADD_MONTHS(SYSDATE, 4) 다음달
FROM DUAL;
언어 설정 :
ALTER SESSION SET NLS_LANGUAGE = KOREAN;
-- 사원 테이블에서 사원명, 입사일, 입사한 달의 마지막날짜, 입사한 달의 근무일수 조회
SELECT EMP_NAME 사원명, HIRE_DATE 입사일, LAST_DAY(HIRE_DATE) "입사한 달의 마지막날짜", LAST_DAY(HIRE_DATE) - hire_date + 1 "근무 횟수"
FROM employee;
EXTRACT : 특정 날짜로부터 년도/월/.일 값을 추출해서 반환해주는 함수
-- 이름, 생년월일, 나이 정보 조회
SELECT NAME, BIRTHDATE,
EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM BIRTHDATE) + 1 "나이"
FROM CUSTOMER;
'ORACLE SQL' 카테고리의 다른 글
ORACLE SQL DDL_01 (0) | 2024.07.27 |
---|---|
SQL 1회독 (0) | 2024.07.26 |
SQL 집합 연산자 , JOIN (0) | 2024.07.24 |
SQL_함수 모음 NULL 처리 함수, 선택 함수 (0) | 2024.07.23 |
SQL 함수_ 형변환 (0) | 2024.07.22 |