✍️ Study Note
[제어 흐름 함수]
1. IF (수식, 참 값, 거짓 값)
- 수식 = 참 -> 참 값
- 수식 = 거짓 -> 거짓 값
2. IFNULL (수식1, 수식2)
- 수식1 = NULL -> 수식2 값
- 수식1 = NOT NULL -> 수식1 값
3. NULLIF (수식1, 수식2)
- 수식1 = 수식2 -> NULL
- 수식1 ≠ 수식2 -> 수식1 값
4. CASE ~ WHEN ~ ELSE ~ END
- 'CASE 값' = 'WHEN 값' --> 'THEN 값'
- 'CASE 값' ≠ 'WHEN 값' --> 'ELSE 값'
SELECT IF (100>200, '참이다', '거짓이다'); -- [결과 : '거짓이다]
SELECT IFNULL (NULL, '널이네요'), IFNULL (100,'널이네요'); -- [결과 : '널이군요', 100]
SELECT NULLIF (100, 100), NULLIF (200,100); -- [결과 : NULL, 200]
SELECT CASE 10
WHEN 1 THEN '일'
WHEN 5 THEN '오'
WHEN 10 THEN '십'
ELSE '모름'
END AS 'CASE 연습'; -- [결과 : '십']
[문자열 함수]
1. ASCII, CHAR
- ASCII : 아스키 코드값 -> 문자
- CHAR : 문자 -> 아스키 코드값
2. BIT_LENGTH, CHAR_LENGTH, LENGTH
- BIT_LENGTH : 할당된 BIT 크기
- CHAR_LENGTH : 문자수
- LENGTH : 할당된 BYTE 수
3. CONCAT, CONCAT_WS
- CONCAT (A,B) : A,B 문자 연결
- CONCAT_WS (구분자, A,B) : A와 B 사이에 구분자 추가되어 문자 연결
SELECT CONCAT ('백조의', '호수'); -- 결과 : 백조의호수
SELECT CONCAT_WS('&', '오데트', '데릭'); -- 결과 : 오데트&데릭
4. ELT, FIELD, FIND_IN_SET, INSTR, LOCTE
1) ELT (위치, 문자1, 문자2, 문자3..) : 위치 X 번째에 해당하는 문자열 반환
2) FIELD (찾는 문자, 문자1, 문자2, 문자3..) :
- 문자 목록 중 찾는 문자의 위치 X 반환,
- 매치되는 문자 없으면 0 반환
3) FIND_IN_SET (찾는 문자, 문자열 리스트)
- 문자열 리스트에서 찾는 문자의 위치 X 반환.
- 문자열 리스트는 '콤마(,)'로 구분되며, 공백이 없어야 함. ('문자1,문자2,문자3')
4) INSTR (문자열 리스트, 일부 문자열)
- 문자열 리스트 중 일부 문자열의 시작 위치 X 반환.
- 문자열 리스트의 '콤마(,)'는 하나의 문자로 인식됨. (FIN_IN_SET과 차이점)
5) LOCATE (일부 문자열, 문자열 리스트) -
- INSTR과 동일하나, 파라미터 순서가 반대.
- 문자열 리스트 중 일부 문자열의 시작 위치 X 반환.
SELECT
ELT (2, '하나', '둘', '셋'), -- 결과 : 둘
FIELD ('둘', '하나', '둘', '셋'), -- 결과 : 2
FIND_IN_SET ('둘', '하나,둘,셋'), -- 결과 : 2
INSTR('하나둘셋','둘'), -- 결과 : 3
LOCATE ('둘','하나둘셋'); -- 결과 : 3
5. FORMAT
1000단위 콤마(,) 추가 + 소숫점 자릿수 지정
6. BIN & HEX & OCT
2진수, 16진수, 8진수 값
7. INSERT (기존 문자열, 대체시작 위치, 삭제 길이, 삽입 문자열)
'기존 문자열'에서 '대체 시작위치'부터 '삭제 길이'만큼 삭제한 후, '삽입 문자열'을 추가함)
8. LEFT & RIGHT (문자열, 길이)
'문자열' 왼쪽 또는 오른쪽에서 '길이'만큼 반환
9. UPPER & LOWER (문자열)
대문자 또는 소문자로 변환
10. LPAD & RPAD (문자열, 길이, 추가 문자)
'문자열'을 '길이'만큼 늘린 후 오른쪽 또는 왼쪽에 '추가 문자'를 합쳐서 반환
SELECT FORMAT(1234.56789, 4); -- 결과 : 1,234.5678
SELECT BIN(31), HEX(31), OCT(31); -- 결과 : 1111, 1F, 37
SELECT INSERT ('ABCDEFGHI', 3, 4, '@@@@');-- 결과 : 'AB@@@@GHI'
SELECT LEFT ('ABCDEFGHI', 3), RIGHT('ABCDEFGHI', 3); -- 결과 : 'ABC', 'GHI'
SELECT LOWER('ABCDEFGHI'), UPPER('abcdefghi'); -- 결과 : 'abcdefghi', 'ABCDEFGHI'
SELECT LPAD('이것이', 5, '##'), RPAD ('이것이', 5, '##'); -- 결과 : '##이것이', '이것이##'
11. LTRIM & RTRIM & TRIM (문자열)
왼쪽,오른쪽, 양쪽의 공백을 제거 (중간 공백은 제외)
11-1. TRIM (LEADING/BOTH/TRAILING 삭제할 문자 FROM 문자열)
문자열의 앞, 뒤, 양쪽 에 있는 '삭제 문자'를 삭제.
12. REPEAT (문자, 반복 횟수)
'반복횟수'만큼 반복한 값을 반환.
12. REPLACE (문자열, '삭제할 문자', '대체할 문자')
'문자열' 안에서 '삭제할 문자'를 없애고, 그 자리에 '대체할 문자'를 넣어 반환.
13. REVERSE (문자열)
문자열을 끝부터 반대로 반환
14. SPACE (10)
'숫자'만큼 공백을 반환
15. SUBSTRING (문자열, 시작위치, 길이)
'문자열'에서 '시작위치'부터 '길이'만큼만 반환
16. SUBSTRING_INDEX (문자열, 구분자, 횟수)
- 횟수 = 양수 -> '문자열' 왼쪽부터 '횟수'만큼 반환하고, 이후는 삭제
- 횟수 = 음수 -> '문자열' 오른쪽부터 '횟수'만큼 반환하고, 이후는 삭제
SELECT LTRIM(' 이것이'), RTRIM('이것이 ');
-- 결과 : '이것이'
SELECT TRIM(' 이것이 '), TRIM(BOTH 'ㅋ' FROM 'ㅋㅋㅋ재밌어요ㅋㅋㅋ');
-- 결과 : '이것이', '재밌어요'
SELECT REPEAT ('이것이', 3);
-- 결과 : '이것이이것이이것이'
SELECT REPLACE('이것이 MYSQL이다', '이것이', 'THIS IS');
-- 결과 : 'THIS IS MYSQL이다'
SELECT REVERSE ('MYSQL');
-- 결과 : 'LQSYM'
SELECT CONCAT('이것이', SPACE(10), 'MYSQL이다');
-- 결과 : '이것이 MYSQL이다'
SELECT SUBSTRING('백조의호수이야기', 3, 2);
-- 결과 : '의호'
SELECT SUBSTRING_INDEX('cafe.naver.com', '.',2), SUBSTRING_INDEX('cafe.naver.com', '.',-2);
-- 결과 : 'cafe.naver', 'naver.com'
'코딩공부' 카테고리의 다른 글
[SQL] MYSQL JOIN (INNER, OUTER, SELF, CROSS) (0) | 2021.10.15 |
---|---|
[SQL] MySQL 내장함수 #2 (수학, 날짜&시간, 시스템 정보 함수) (0) | 2021.10.13 |
[SQL] MySQL Workbench 설정 (명령어 대문자, 주석, 쿼리 폰트 설정) (0) | 2021.10.11 |
[SQL] 데이터 타입과 변환, 변수 선언 (0) | 2021.10.11 |
[SQL] MySQL 문법 공부 (데이터 조회, 추가, 삭제, 조건 / 명령어 종류) (0) | 2021.10.11 |