-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path1005.sql
More file actions
126 lines (78 loc) · 3.06 KB
/
1005.sql
File metadata and controls
126 lines (78 loc) · 3.06 KB
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
LTRIM / RTRIM
L트림은 왼쪽부터 지정한 문자를 삭제
R트림은 왼쪽부터 지정한 문자를 삭제
SELECT job_id, LTRIM(job_id, 'F'), RTRIM(job_id, 'T')
FROM employees;
SELECT TRIM(' - space - ')
FROM dual;
# 숫자 관련 함수
Round 지정한 자리에서 반올림하는 함수
1 2 3 . 4 5 6 7
-3 -2 -1 0 1 2 3
SELECT salary 월급, round(salary/30) 일급 FROM employees;
TRUNC 지정한 자리에서 버림하는 함수
SELECT salary 월급,
trunc(salary/30,0) 일급
FROM employees;
#날짜...
날짜에 더하거나 빼면 날짜가 계산된다.
SELECT TO_CHAR(SYSDATE, 'YY/MM/DD')
FROM dual;
SELECT TO_CHAR(SYSDATE, 'YY/MM/DD'),
SYSDATE + 1 tomorrow,
SYSDATE - 1 yesterday
FROM dual;
SELECT hire_date
ADD_MONTHS(hire_date, 3) 3일전,
ADD_MONTHS(hire_date, -3) 3일후
FROM employees;
SELECT hire_date,
NEXT_DAY(hire_date, 1) 가까운금요일
, NEXT_DAY(hire_date,6) 가까운일요일 from employees;
last_day 이번달의 마지막 날짜
SELECT hire_date,
LAST_DAY(hire_date) 결과
from employees;
날짜 반올림
SELECT hire_date,
round(hire_date, 'MONTH') 결과
from employees
#변환 함수...
각 열에 대해 데이터 타입이 규정된다. 그러므로 SQL문을 실행하기 위해 데이터 값의 데이터 타입을 변환할 때도 있다. 이 때 사용하는 함수가 변환함수이다.
데이터 타입의 변환은 자동으로(암묵적으로) 또는 사용자에 의해 수동으로(명시적으로) 변환된다.
SELECT 1 + '2'
FROM dual;
'2'는 작은따옴표로 묶여 있기 때문에 숫자가 아닌 문자다. 하지만 결과는 3이라고 바르게 연산이 되었다. 자동으로 숫자 2로 변환하며 계산했기 때문이다.
다만 자동 데이터 타입 변환을 이용할 수 있더라도 sql문의 성능과 안정성을 위해 수동 데이터 타입 변환을 권장한다.
TO_CHAR, TO_NUMBER, TO_DATE
SELECT TO_CHAR(SYSDATE, 'YY'),
TO_CHAR(SYSDATE, 'YYYY'),
TO_CHAR(SYSDATE, 'MM'),
TO_CHAR(SYSDATE, 'YYMMDD')
FROM dual;
SELECT TO_CHAR(SYSDATE, 'HH:MI:SS:PM'),
TO_CHAR(SYSDATE, 'YYYY/MM/DD HH:MI:SS PM')
FROM dual;
SELECT TO_NUMBER('123')
FROM dual;
SELECT TO_DATE('20211005','YYMMDD')
FROM dual;
NULL 처리
특정 열의 행에 대한 데이터 값이 없으면 null이 된다.
null은 그 자체로 의미가 있다. '값이 없다.'
null을 가지지 못하게 지정할 수 있다. 이것을 not null이라고 한다.
null값을 계산하면 산술 연산의 결과도 null이 나온다.
SELECT * FROM employees
ORDER BY commission_pct;
SELECT salary * NVL(commission_pct, 1)
FROM employees
ORDER BY commission_pct;
#NVL 함수는 null값을 어떤 특정한 값으로 변환하는데 사용한다.
DECODE if
DECODE (열, 조건, 치환(true), 기본값(false))
SELECT first_name,
department_id,
salary 원래급여,
DECODE(department_id, 60,salary*1.1, salary),
DECODE(department_id, 60, '10%인상','미인상')
FROM employees;