슈뢰딩거의 고등어

[SQL 기본] 3. 함수 본문

DB

[SQL 기본] 3. 함수

슈뢰딩거의 고등어 2022. 2. 24. 15:51

http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9791138310413&orderClick=LA6 

 

2022 유선배 SQL개발자(SQLD) 과외노트 - 교보문고

유튜브 선생님에게 배우는 유·선·배! | 이 책은 데이터베이스에 대한 기본 지식은 없지만 자격증을 취득해보기로 마음을 먹은 용감한 초보자들을 위한 책입니다. 기술 서적의 경우 전공자를 대

www.kyobobook.co.kr

SELECT 구문에서 사용가능한 함수들에 대해 알아본다.

  1. 문자함수
  2. 숫자함수
  3. 날짜함수
  4. 변환함수
  5. NULL 관련함수
  6. CASE

 

1. 문자함수

문자함수
CHR(ASCII 코드) 'A' -> 65    
LOWER(문자열)      
UPPER(문자열)      
LTRIM(문자열, [특정문자]) 특정문자를 명시해주지 않으면 공백을 제거한다. 왼쪽부터 한글자씩 특정문자와 비교하여 존재한다면 제거하고 없다면 멈춘다.  
RTRIM(문자열, [특정문자]) ,, ,,  
TRIM([위치], [특정문자], [FROM] 문자열) 옵션이 하나도 없을 경우, 오른쪽 왼쪽 공백을 제거한다.  위치 옵션 : LEADING, TRAILING, BOTH 지정된 곳과 특정문자와 비교하여 제거한다.
LTRIM, RTRIM 과 달리 특정문자는 한글자만 지정할 수 있다.
SUBSTR(문자열, 시작점, [길이]) 길이를 명시하지 않았을 경우 문자열의 시작점부터 끝까지 리턴된다.    
LENGTH(문자열)      
REPLACE(문자열, 변경전 문자열, [변경후 문자열]) 변경후 문자열을 정의해주지 않으면 문자열에서 변경전 문자열을 제거한다.    
select length(rtrm(col1, 'LE')) + length (ltrm(col2, 'DE')) as result
	from sample;
COL1 COL2
ORACLE DATABASE
SQL DEVELOPER
RESULT
11
9

풀이 ) 

COL1 COL2
ORACLE DATABASE
SQL DEVELOPER

2. 숫자함수

반올림/ 내림 함수는 4개가 존재하는데 리턴형식에 따라 다르다.

 

숫자함수
ABS(수) 절대값을 리턴    
SIGN(수) 수의 부호를 리턴 양수: 1
0 : 0
음수 : -1
 
ROUND(수, [자리수]) 반올림, 자리수의 기본값은 0 [ 자리수가 양수일 경우 ] [ 자리수가 음수일 경우 ]
    round(163.76, 1) 
: 소수점 1자리까지 나타내겠다는 의미
-> 163.8
round(163.76, -2) 
: 2자리 수에서 반올림 하겠다는 의미
-> 200
TRUNC(수, [자리수]) 버림, 자리수의 기본값은 0 [ 자리수가 양수일 경우 ] [ 자리수가 음수일 경우 ]
    trunc(163.76, 1) 
: 소수점 1자리까지 나타내겠다는 의미
-> 163.7
trunc(163.76, -2) 
: 2자리에서 그 밑은 다 버림
-> 100
CEIL(수) 소수점 이하의 수를 올림한 정수 리턴    
FLOOR(수) 소수점 이하의 수를 내림한 정수 리턴    
MOD(수1, 수2) 수1 % 수2 if 수2 == 0 : 
    return 수1
 

 


3. 날짜함수

날짜함수
SYSDATE 현재 시간을 리턴 1. Year
2. Month
3. Day
4. Hour
5. Minute
6. Second
select SYSDATE from dual;
>> 2022-02-24 15:24:30
EXTRACT(특정단위 FROM 날짜 데이터)   위 6개중 선택 가능 select Extract(Month from SYSDATE) from dual;
>> 2
ADD_MONTHS(날짜데이터, 특정 개월 수) 날짜 데이터에서 특정 개월 수를 더한 날짜를 반환 출력할 날짜가 존재하지 않으면 해당 월의 마지막 일자가 리턴 select ADD_MONTH(TO_DATE('2022-01-31','YYYY-MM-DD'), 1) from dual;
>> 2022-02-28
: 2022-02-31은 존재하지 않으므로

4. 변환함수

변환의 종류  
명시적 변환 변환함수를 사용하여 데이터 유형 변화를 명시적으로 나타냄
암시적 변환 데이터베이스가 내부적으로 판단하여 유형을 변환함

암시적변환이 가능하다고 해서 데이터 유형을 고려하지 않고 쿼리를 작성하면, 성능저하와 에러를 리턴하는 경우가 있으므로 변환함수를 통한 명시적 변환 사용을 지향한다.

변환함수
TO_NUMBER(문자열) 문자열을 숫자로 변환 TO_NUMBER('1234')
>> 1234
TO_NUMBER('abc')
>> ERROR!
TO_CHAR(수 || 날짜, [포맷]) 수나 날짜형의 데이터를 문자열로 변환 TO_CHAR(SYSDATE, 'YYYYMMDD HH24MISS');
>> 20220224 153542
TO_CHAR(1234)
>> '1234'
TO_DATE(문자열, 포맷) 문자열을 날짜형으로 변환한다. TO_DATE('20220224', 'YYYYMMDD')
>> '2022-02-24'
 
포맷표현 의미
YYYY
MM
DD
HH24 시간(24시)
HH 시간(12시)
MI
SS

5. NULL 관련함수

NULL 관련함수
NULLIF(인수1, 인수2) if(인수1 == 인수2)
    return NULL
return 인수1
NVL(인수1, 인수2) if(인수1 == NULL) 
    return 인수2
return 인수1
COALESCE(인수1, 인수2, 인수3...) 인수1~ n중, NULL 이 아닌 최초의 인수를 반환

6. CASE

코테에서 알아두면 유용하다.

세개 다 같은 결과가 나온다.

SELECT SUBWAY_LINE,
        CASE SUBWAY_LINE
            WHEN '1' THEN 'BLUE'
            WHEN '2' THEN 'GREEN'
            ELSE 'GRAY'
        END AS COLOR
    FROM SUBWAY;
    
SELECT SUBWAY_LINE,
        CASE SUBWAY_LINE
            WHEN SUBWAY_LINE = '1' THEN 'BLUE'
            WHEN SUBWAY_LINE = '2' THEN 'GREEN'
            ELSE 'GRAY'
        END AS COLOR
    FROM SUBWAY;
 
 --- ORACLE
 SELECT SUBWAY_LINE, 
 		DECODE (SUBWAY_LINE, '1', 'BLUE', '2', 'GREEN', 'GRAY') AS COLOR
        FROM SUBWAY;
SUBWAY_LINE COLOR
1 BLUE
2 GREEN
10 GRAY
8 GRAY

 

'DB' 카테고리의 다른 글

[LeetCode] 1757. Recyclable and Low Fat Products  (0) 2023.04.28
[SQL 기본] JOIN  (0) 2022.03.11
[SQL 기본] 4. WHERE 절  (0) 2022.03.01
[SQL 기본] 2. Select 문  (0) 2022.02.24
[SQL 기본] 1. 관계형 데이터베이스 개요  (0) 2022.02.24
Comments