일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- SQLD
- DFS
- 코딩테스트
- istringstream
- 부주상골증후군
- IOS
- sql
- BFS
- 카카오인턴십
- 부주상골수술
- 코테
- 카카오인턴
- 독일어
- 분할정복
- 부주상골
- SWIFT
- dp
- 독일어독학
- 독학
- 부주상골수술후기
- ChatGPT
- 롯데정보통신
- c++
- 구현
- 스택
- 백준
- 프로그래머스
- 카카오코테
- 리눅스
- 세브란스
Archives
- Today
- Total
슈뢰딩거의 고등어
[SQL 기본] 3. 함수 본문
2022 유선배 SQL개발자(SQLD) 과외노트 - 교보문고
유튜브 선생님에게 배우는 유·선·배! | 이 책은 데이터베이스에 대한 기본 지식은 없지만 자격증을 취득해보기로 마음을 먹은 용감한 초보자들을 위한 책입니다. 기술 서적의 경우 전공자를 대
www.kyobobook.co.kr
SELECT 구문에서 사용가능한 함수들에 대해 알아본다.
- 문자함수
- 숫자함수
- 날짜함수
- 변환함수
- NULL 관련함수
- 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 |
ORAC |
|
SQ |
2. 숫자함수
숫자함수 | |||
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