DATA 분석 교육 과정 (2024.02~08)/SQL

SQL _ SELECT(사칙연산, 연결연산, 내장형함수, 형변환함수, NULL함수)

글로리아-89 2024. 2. 24. 18:22
728x90
1. 사칙연산 
예시
2. 연결연산 (||)

 

3. 내장형(built-in) 함수

 
 - 미리 만들어 놓은 함수
 - 문자형 함수 : UPPER , SUBSTR , TRIM , REPLACE
 - 숫자형 함수 : MOD , ROUND
 - 날짜형 함수 : SYSDATE

    * 본업시 전부 외울 필요없이 필요할 때만 구글링

   
   1) 문자형 함수 
     (1) UPPER
      - 기능 : 입력받은 문자열에서 소문자를 대문자로 바꿔준다
      - 입력 값 : 문자형 리터럴 1개 혹은 문자형 컬럼
        -   출력 값 : 문자형 리터럴 1개 
      - 예시 1) SELECT UPPER('abcde123@@') AS UPPER사용

      - 예시 2) SELECT CUST_ID , PASSWD , UPPER(PASSWD) AS 패스워드대문자

     (2) SUBSTR
      - 기능 : 입력받은 문자형 리터럴에서 시작위치에서 길이만큼 잘라낸다
      - 입력 값 : 문자형 리터럴 1개 , 시작위치 , 길이
      - 출력 값 : 문자형 리터럴 1개 
      - 예시
SELECT PRD_ID 
  , PRD_NAME
  , PRD_DETAIL
  , SUBSTR(PRD_DETAIL , 1 , 5) || '...' AS 상품설명생략  -- 첫번째부터 5번째 단어까지 출력 (띄어쓰기 포함)
FROM TB_PRD 
WHERE PRD_TYPE = '가전';

     (3) TRIM
      - 기능 : 입력받은 문자형 리터럴의 양 끝의 공백을 제거한다. (단, 문자 중간의 공백은 제거 X)
      - 입력 값 : 문자형 리터럴 1개 (기본적으로 쓰는 방식 기준)
      - 출력 값 : 문자형 리터럴 1개
      - 예시
SELECT TRIM(' 안녕하세요 ') , TRIM( '안 녕 하 세 요 ') 
  FROM DUAL ;

     (4) REPLACE
      - 기능 : 입력받은 문자형 리터럴 안에있는 바뀔값을 바꿀값으로 변경하여 출력한다.
      - 입력 값 : 문자형 리터럴 1개 , 바뀔값, 바꿀값
      - 출력 값 : 문자형 리터럴 1개
      - 예시
SELECT PRD_ID 
   , PRD_NAME
   , PRD_DETAIL

   , REPLACE(PRD_DETAIL , ' ' , '') --값에 있는 띄어쓰기(' ') 를 공백('')으로 치환 

FROM TB_PRD 
WHERE PRD_TYPE = '가전';

   
  2) 숫자형 함수
     (1) MOD
      - 기능 : 피제수를 제수로 나눈 나머지 숫자형 리터럴을 출력한다.
      - 출력 값 : 숫자형 리터럴 1개 -- 예시) 10 % 3 = 1
      - 입력 값 : 숫자형 리터럴 2개 ( 피제수 , 제수 ) -- 예시 ) 피제수 : 10 , 제수 : 3
      - 예시
    SELECT MOD(100 , 8) AS 나머지값 
            , MOD(30 ,10) AS 나머지값2  
     FROM DUAL ;

     (2) ROUND
      - 기능 : 실수를 소수점 자릿수까지 반올림한 결과를 출력한다.
      - 입력 값 : 숫자형 리터럴 2개 ( 실수 , 소수점자릿수 )
      - 출력 값 : 숫자형 리터럴 값
        - 예시
SELECT ROUND(1.452 , 2) , ROUND(1.452 , 1) 
  FROM DUAL
 

 
   3) 날짜형 함수
     (1) SYSDATE
      - 입력 시 바로 출력이 되며, 현재 시간을 초단위까지 날짜형 리터럴로 출력
      - 실무에서는 현재 시간을 입력하거나, 아래와 같이 날짜를 조작해 사용하기도 합니다
      - 예시
SELECT SYSDATE + 1 AS 하루더함 
      , SYSDATE + 1/24 AS 한시간더함 
      , SYSDATE + 1/24/60 AS 일분더함 
      , SYSDATE + 1/24/60/60 AS 일초더함 
FROM DUAL ;

 

4. 형변환함수

- 특정 자료형으로 변경하는 함수 
- 연산을 하기 전 형 변환 발생
- 형 변환 우선순위 : 날짜형(1순위) > 숫자형 > 문자형
- TO_CHAR, TO_DATE, TO_NUMBER( )

- 예시
SELECT TO_NUMBER('1')   -- 문자형('1')을 숫자형(1) 로 형변환해 출력
FROM DUAL ;

SELECT TO_CHAR(1)   --숫자형(1)을 문자형('1') 로 형변환해 출력
FROM DUAL ;

SELECT TO_CHAR(SYSDATE , 'YYYY/MM/DD HH24:MI:SS')  --날짜형(SYSDATE) 을 문자형으로 변경 
FROM DUAL ;

SELECT TO_DATE('20230101' , 'YYYY/MM/DD') - 문자형('20230101141212')을 날짜형(2023/01/01 14:12:12) 으로 변경
FROM DUAL ;

SELECT TO_DATE('20230101141212' , 'YYYY/MM/DD HH24:MI:SS')  --문자형('20230101141212')을 날짜형(2023/01/01 14:12:12) 으로 변경
FROM DUAL;
 

5. NULL함수

 
 -  NULL값을 대체할 수 있는 함수 
 - 정상적인 산술,비교 연산 등이 불가능
 - NVL, NVL2, DECODE, COALESCE  ( **NVL 와 DECODE 는 정말 자주 사용)
 
  1) NVL( data1 , data2 )
  - data1에 NULL 값이 들어오면 data2를 출력하고 NULL이 아니면 data1을 출력
  - 예시 
SELCET CUST_ID
  , PHONE_NO
  , NVL (PHONE_NO, '연락처없음')  AS NVL적용
FROM TB_CUST

 
 2) DECODE( data1 , data2 , data3 , data4 … )
   - data1 과 data2 가 동일하면 data3을 출력하고 , 그렇지 않으면 data4를 출력
   - 예시
SELCET CUST_ID
  , PHONE_NO
  , DECODE (PHONE_NO, NULL , '연락처없음', PHONE_NO)  AS DECODE적용
FROM TB_CUST

 

728x90
반응형