생각하는 감쟈
[Oracle] SQL 연산자_03 : 기타 연산자, 표현식 본문
6. BETWEEN 연산자
- 모든 자료형에 사용가능
- 구간을 정할때 사용
(사용형식)
컬럼명 BETWEEN 하한값 AND 상한값
. 논리연산자 AND 로 치한 가능함
사용예) 매입테이블(BUYPROD)에서 2020년 3월 1일부터 3월 15일까지 매입정보
매입일자(BUY_DATE), 매입상품 (BUY_PROD), 매입수량(BUY_QTY)를 일자순으로 조회
SELECT BUY_DATE AS 매입일자,
BUY_PROD AS 매입상품,
BUY_QTY AS 매입수량
FROM BUYPROD
WHERE BUY_DATE BETWEEN TO_DATE('20200301') AND TO_DATE('20200315')
ORDER BY 1;
사용예) 매출테이블에서 2020년 6~7월에 판매된 상품 중 분류코드
'P101' ~ 'P200'에 속한 상품들의 매출정보(날짜, 상품코드, 매출수량)를
날짜, 분류코드 순으로 조회하시오.
SELECT (SUBSTR(CART_NO,1,8) 날짜,
CAERT_NO AS 상품코드,
CART_QTY AS 매출수량
FROM CHAR
-- WHERE SUBSTR(CART NO,1,6)>='202006' AND SUBSTR(CART NO,1,6)<='202007'
WHERE SUBSTR(CART_NO,1,6) BETWEEN '202006' AND'202007'
-- AND SUBSTR(CART_PROD NO,1,2)>='P1' AND SUBSTR(CART_PROD NO,1,2)>='P2'
AND SUBSTR(CART_PROD,1,2) BETWEEN 'P1' AND'P2'
ORDER BY 1 ,SUBSTR(CART_PROD,1,4);
7. 문자열 결합연산자 : '||'
- 자바의 String class의 '+' 와 같은 기능
- 두 문자열을 결함하여 하나의 새로운 문자열 반환
- 문자열 결합함수 CONCAT( )이 제공
8. 표현식
- 애플리케이션 언어의 IF 또는 SWITCH 문의 기능을 제공
- CASE WHEN ~ THEN ~ END 와 DECODE 표현식이 제공됨
- SELECT 절에서만 사용 가능!
1) DECODE(컬럼, 조건1, 결과1, 조건2, 결과2,...)
. '컬럼'을 평가하여 그 값이 '조건1'과 같으면 '결과1'을 반환하고,
'조건2'와 같으면 '결과2'을 반환
모든 '조건'과 일치하지 않으면 '결과n'을 반환(else~)
. 자바의 if 문으로 표현하면
if( 컬럼==조건1 ) { 결과1; }
else if ( 컬럼==조건2 ) { 결과3; }
else{ 결과n; }
사용예) 회원테이블에서 회원번호, 회원명, 주민등록번호, 성별을 조회하시오.
SELECT MEM_ID AS 회원번호,
MEM_NAME AS 회원명,
MEM_REGNO1 || '-' || MEM_REGNO2 AS 주민등록번호,
DECODE(SUBSTR(MEM_REGNO2,1,1), '1', '남성', '2', '여성',
'3', '남성', '4', '여성') AS 성별
FROM MEMBER;
2) CASE WHEN 조건1 THEN 반환값1
WHEN 조건2 THEN 반환값2
:
WHEN 조건n THEN 반환값n
ELSE 반환값m
END AS 별칭
--세미콜론 안씀 END로 끝나야함
사용예) 회원테이블에서 회원번호, 회원명, 주민등록번호, 성별을 조회하시오.
SELECT MEM_ID AS 회원번호,
MEM_NAME AS 회원명,
MEM_REGNO1 || '-' || MEM_REGNO2 AS 주민등록번호,
-- CASE1
CASE WHEN SUBSTR(MEM_REGNO2,1,1) = '1' THEN '남성'
WHEN SUBSTR(MEM_REGNO2,1,1) = '3' THEN '남성'
WHEN SUBSTR(MEM_REGNO2,1,1) = '2' THEN '여성'
WHEN SUBSTR(MEM_REGNO2,1,1) = '4' THEN '여성'
ELSE '데이터 오류'
-- CASE2
CASE WHEN SUBSTR(MEM_REGNO2,1,1) IN ('1','3') THEN '남성'
WHEN SUBSTR(MEM_REGNO2,1,1) IN ('2','4') THEN '여성'
ELSE '데이터 오류'
END AS 성별
FROM MEMBER;
3) CASE 컬럼 WHEN 값1 THEN 반환값1
WHEN 값2 THEN 반환값2
:
WHEN 값n THEN 반환값n
ELSE 반환값m
END AS 별칭
사용예) 회원테이블에서 회원번호, 회원명, 주민등록번호, 성별을 조회하시오.
SELECT MEM_ID AS 회원번호,
MEM_NAME AS 회원명,
MEM_REGNO1 || '-' || MEM_REGNO2 AS 주민등록번호,
CASE SUBSTR(MEM_REGNO2,1,1) WHEN '1' THEN '남성'
WHEN '3' THEN '남성'
WHEN '2' THEN '여성'
WHEN '4' THEN '여성'
END AS 성별
FROM MEMBER;
'Language > Oracle' 카테고리의 다른 글
[Oracle] SQL FUNCTION_02 : 숫자 함수 (0) | 2024.03.18 |
---|---|
[Oracle] SQL FUNCTION_01 : 문자열 함수 (0) | 2024.03.18 |
[Oracle] SQL 연산자_02 : 기타 연산자 (1) | 2024.03.12 |
[Oracle] SQL 연습 문제 HW01 (0) | 2024.03.11 |
[Oracle] SQL SELECT : 자료 검색 명령 (0) | 2024.03.08 |