1. 내장형함수
더보기
<내장형함수>
문자형 함수 : LOWER, UPPER, SUBSTR, TRIM, REPLACE
숫자형 함수 : MOD, ROUND
날짜형 함수 : LAST_DAY, ADD_MONTHS, SYSDATE
[문자형 함수]
LOWER
UPPER
SUBSTR
예제 1)
SELECT SUBSTR('https://smhrd.or.kr/', 9, 5)
FROM DUAL;
예제 2)
SELECT 직원ID
, 주민등록번호
, SUBSTR(주민등록번호, 1, 6)
FROM 직원;
예제 3)
/*
6. 직원연락처 테이블에서 연락처 컬럼의 데이터를 앞에 3자리만 추출하여
010 이면 휴대폰 , 아니면 집전화로 판단하려고 합니다.
다음과 같이 출력되도록 해주세요 (WHERE 사용 안함)
직원ID 구분코드 연락처 연락처앞자리만 ( <- AS로 만든 컬럼임)
A0001 집전화 062-123-1234 062
A0001 휴대폰 010-1231-1234 010
A0002 집전화 062-254-6342 062
... ... ... ...
*/
SELECT 직원ID
, 구분코드
, 연락처
, SUBSTR(연락처, 1, 3) AS 연락처앞자리만
FROM 직원연락처;
TRIM
REPLACE
예제 1)
SELECT 직원ID
, 구분코드
, 연락처
, REPLACE(연락처, '-', '')
FROM 직원연락처;
예제 2)
/*
7. 직원 테이블에서 패스워드 컬럼에 대해 ! 기호를 사용하지 말라는 요청이 들어왔습니다.
! 기호를 @ 기호로 바꾼 값으로 출력을 해주세요 (where 사용 안함)
출력예시 )
직원id , 패스워드 , 변경된패스워드 (<-AS 처리된 컬럼 )
*/
SELECT 직원ID
, 패스워드
, REPLACE(패스워드, '!', '@') AS 변경된패스워드
FROM 직원;
[숫자형 함수]
MOD
ROUND
[날짜형 함수]
SYSDATE
--실무에서는 아래와 같이 날짜를 조작하기도 한다.
SELECT SYSDATE + 1 AS 하루더함
, SYSDATE + 1/24 AS 한시간더함
, SYSDATE + 1/24/60 AS 일분더함
, SYSDATE + 1/24/60/60 AS 일초더함
FROM DUAL;
예제 1)
SELECT SYSDATE + 3 AS DAY3일후
FROM DUAL;
LAST_DAY
ADD_MONTHS
예제 1)
SELECT 직원ID
, 입사일시
, ADD_MONTHS(입사일시 + 60) AS 오년후입사일시
FROM 직원;
2. 형변환함수
SELECT TO_NUMBER('1') FROM DUAL ; -- 문자형('1')을 숫자형(1) 로 형변환해 출력
SELECT TO_CHAR(1) FROM DUAL ; --숫자형(1)을 문자형('1') 로 형변환해 출력
SELECT TO_CHAR(SYSDATE , 'YYYY/MM/DD HH24:MI:SS') FROM DUAL ;
SELECT TO_DATE('20230101' , 'YYYY/MM/DD') FROM DUAL ;
SELECT TO_DATE('20230101141212' , 'YYYY/MM/DD HH24:MI:SS') FROM DUAL;
/*
3번 문제는 날짜형(SYSDATE) 을 문자형으로 변경합니다. (포맷의미는 꼭 외웁시다!)
4번 문제는 문자형('2023010114')을 날짜형 (2023/01/01 14:00:00) 으로 변경합니다.
5번 문제는 문자형('20230101141212')을 날짜형(2023/01/01 14:12:12) 으로 변경합니다.
*/
문제 1)
SELECT 직원ID
, 입사일시
, TO_CHAR(입사일시, 'YYYY') AS 입사연도
FROM 직원 ;
문제 2)
SELECT 직원ID
, 나이
, (나이 + 1) AS 올해나이
FROM 직원 ;
3. NULL 함수 사용하기
NVL(data1, data2)
NVL2(data1, data2, data3)
DECODE(data1, data2, data3, data4)
COALESCE(data1, data2, data3, ... , dataN)
문제)
-- 1.
SELECT 직원ID
, 패스워드
, NVL(나이, 20) AS 나이
FROM 직원 ;
-- 2.
SELECT 직원ID
, 성별
, 연봉
, DECODE(성별, '남', '남성입니다', '여성입니다') AS 남녀확인
FROM 직원 ;
'Computer Engineering > DB_Oracle' 카테고리의 다른 글
230228_복습용문제 (0) | 2023.02.28 |
---|---|
WHERE_01. 비교조건과 논리조건 (0) | 2023.02.27 |
SELECT_02.연산&함수 (0) | 2023.02.27 |
SELECT_01.기본 (0) | 2023.02.27 |
1. 오라클 데이터베이스 (0) | 2023.02.25 |
댓글