-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path15_build_in_function.sql
More file actions
148 lines (107 loc) · 5.21 KB
/
Copy path15_build_in_function.sql
File metadata and controls
148 lines (107 loc) · 5.21 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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
-- 1. 문자열 관련 함수
-- ascii(아스키 코드), char(숫자)
SELECT ASCII('a'), CHAR(97);
-- bit_lenght(문자열), char_length(문자열), lenght(문자열)
-- 영어, 숫자, 특수기호 제외 한문자 당 3바이트 할당
SELECT
BIT_LENGTH('한글')
, CHAR_LENGTH('한글')
, LENGTH('한글');
-- contcat(문자열1, 문자열2, ...), concat_ws(구분자, 문자열1, 문자열2)
SELECT CONCAT('nice', ' to', ' meet', ' you');
SELECT CONCAT_WS(' ', 'nice', 'to', 'meet', 'you');
SELECT CONCAT(CAST(menu_price AS CHAR), '원') FROM tbl_menu;
-- ELT(위치, 문자열1, 문자열2, ...), FIELD(찾을 문자열, 준자열1, 문자열2, ...),
-- FIND_IN_SET(찾을 문자열, 문자열 리스트), INSERT(기준 문자열, 부분 문자열),
-- LOCATE(부분 문자열, 기준 문자열)
SELECT
ELT(2, '축구', '야구', '농구')
, FIELD('축구', '야구', '농구', '축구')
, FIND_IN_SET('축구', '야구,농구,축구') -- 콤마 사이에 띄어쓰기X
, INSTR('축구농구야구', '농구')
, LOCATE('야구', '축구농구야구'); -- INSTR과 LOCATE는 서로 인자가 반대
-- INSERT(기준 문자열, 위치, 해당 위치에서 지울 길이, 삽입할 문자열)
SELECT INSERT('나와라 피카츄!', 5, 3, '꼬부기'); -- 나와라 꼬부기!
SELECT INSERT('나와라 피카츄!', 5, 1, '꼬부기'); -- 나와라 꼬부기카츄!
-- LEFT(문자열, 길이), RIGHT(문자열, 길이)
SELECT LEFT('Hello World!'), RIGHT('Nice Shot!', 5);
-- UPPER(문자열), LOWER(문자열)
SELECT LOWER('Hello World!'), UPPER('Hello World!');
-- LPAD(문자열, 길이, 채울 문자열), RPAD(문자열, 길이, 채울 문자열)
SELECT LPAD('왼쪽', 10, '#'), RPAD('오른쪽', 10, '#');
-- LTRIM(문자열), RTRIM(문자열)
-- TRIM(문자열), TRIM(방향 자를_문자열 FROM 문자열)
SELECT LTRIM(' 왼쪽'), RTRIM('오른쪽 '), '오른쪽 '
SELECT TRIM(' MySQL '), TRIM(BOTH '@' FROM '@@@@MySQL@@@@');
SELECT TRIM(' MySQL '), TRIM(LEADING '@' FROM '@@@@MySQL@@@@'); -- LRIM
SELECT TRIM(' MySQL '), TRIM(TRAILING '@' FROM '@@@@MySQL@@@@'); -- RLIM
-- FORMAT(숫자, 소수점 자리수)
SELECT FORMAT(1231234566, 3);
-- BIN(숫자), OCT(숫자), HEX(숫자)
SELECT BIN(65), OCT(65), HEX(65);
-- REPEAT(문자열, 횟수)
SELECT repeat('hello ', 5);
-- REPLACE(문자열, 찾을 문자열, 바꿀 문자열)
SELECT REPLACE('마리아DB','마리아','Maria'); -- db값이 바뀌는게 아님
-- REVERSE(문자열)
SELECT REVERSE('happiness');
-- SPACE(길이)
SELECT CONCAT('제 포켓몬은', SPACE(3), '이고, 속성은', SPACE(6), '입니다.');
-- SUBSTRING(문자열, 시작위치, 길이)
SELECT SUBSTRING('열심히 db공부를 해봅시다.', 5, 4)
, SUBSTRING('열심히 db공부를 해봅시다.', 11); -- 11번째 문자부터 끝까지
-- SUBSTRING_INDEX(문자열, 구분자, 횟수)
SELECT
SUBSTRING_INDEX('010-123-1234', '-', 2)
, SUBSTRING_INDEX('010-123-1234', '-', -1);
-- 2. 숫자 관련 함수
-- ABS(숫자)
SELECT ABS(-123);
-- CEILING(숫자), FLOOR(숫자), ROUND(숫자)
SELECT CEILING(1234.56), FLOOR(1234.56),ROUND(1234.56);
-- CONV(숫자, 원래 진수, 변환할 진수)
SELECT CONV('A', 16, 10), CONV('A', 16, 2);
-- MOD(숫자1, 숫자2)
SELECT MOD(10, 3), 10%3;
-- POW(숫자1, 숫자2), SQRT(숫자)
SELECT POW(3, 2), SQRT(81);
-- RAND()
-- RAND()*생성할 난수의 개수 + 난수의 초기값
SELECT RAND(), FLOOR(RAND() * (11 - 1) + 1);
-- SIGN(숫자)
SELECT SIGN(10.1), SIGN(0), SIGN(-1.1);
-- TRUNCATE(숫자, 정수)
SELECT TRUNCATE(12345.12345, 2), TRUNCATE(12345.12345, -2);
-- 3. 날짜 및 시간 관련 함수
-- ADDDATE(날짜, 차이), SUBDATE(날짜, 차이)
SELECT ADDDATE('2020-02-01', INTERVAL 28 DAY) -- 윤년까지 고려 가능
, ADDDATE('2020-02-01', 28); -- 숫자만 써도 가능
SELECT SUBDATE('2020-02-01', INTERVAL 1 DAY);
, SUBDATE('2020-02-01', 1);
SELECT ADDDATE('2020-02-01', INTERVAL 28 MONTH); -- month는 영어 붙여줘야 가능
, SUBDATE('2020-02-01', INTERVAL 1 MONTH);
-- ADDTIME(날짜/시간, 시간), SUBTIME(날짜/시간, 시간)
SELECT ADDTIME('2023-12-28 10:27:00', '1:0:10')
, SUBTIME('2023-12-28 10:27:00', '1:0:10');
-- CURDATE(), CURTIME(), NOW(), SYSDATE()
SELECT CURDATE(), CURTIME(), NOW(), SYSDATE();
SELECT CURTIME(), CURRENT_TIME(), CURRENT_TIME; -- 괄호 안써도 가능
SELECT @@GLOBAL.TIME_ZONE; -- 현재 타임존 기준을 확인하는 조회문
-- YEAR(날짜), MONTH(날짜), DAY(날짜)
SELECT YEAR(CURDATE()), MONTH(CURDATE()), DAY(CURDATE()), DAY(CAST('2023-12-28' AS DATE));
SELECT HOUR(CURTIME()), MINUTE(CURTIME()), SECOND(CURTIME());
SELECT DATE(NOW()), TIME(NOW());
-- DATEDIFF(날짜1, 날짜2), TIMEDIFF(날짜1 또는 시간1, 날짜2 또는 시간 2)
SELECT DATEDIFF('2024-06-14', '2023-12-28'), TIMEDIFF('18:00:00', CURTIME());
-- DAYOFWEEK(날짜), MONTH(날짜), DAYOFYEAR(날짜)
SELECT DAYOFWEEK(CURDATE()), MONTHNAME(CURDATE()), DAYOFYEAR(CURDATE());
-- LAST_DAY(날짜)
SELECT LAST_DAY('20230201');
-- MAKEDATE(연도, 정수)
SELECT MAKEDATE(2023, 35);
-- MAKETIME(시, 분, 초)
SELECT MAKETIME(17, 03, 02);
-- QUARTER(날짜)
SELECT QUARTER('2023-12-28');
-- TIME_TO_SEC(시간)
SELECT TIME_TO_SEC(CURTIME()); -- 오늘 흐른 시간