생각하는 감쟈

[Oracle] SQL 연산자_03 : 기타 연산자, 표현식 본문

Language/Oracle

[Oracle] SQL 연산자_03 : 기타 연산자, 표현식

생각하는 감쟈🥔 2024. 3. 15. 12:43

 

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;


           

Comments