시간 더하기, 빼기
--------------------------------------------------------------------------
DATE_ADD
SELECT DATE_ADD(NOW(), INTERVAL 1 SECOND)
SELECT DATE_ADD(NOW(), INTERVAL 1 MINUTE)
SELECT DATE_ADD(NOW(), INTERVAL 1 HOUR)
SELECT DATE_ADD(NOW(), INTERVAL 1 DAY)
SELECT DATE_ADD(NOW(), INTERVAL 1 MONTH)
SELECT DATE_ADD(NOW(), INTERVAL 1 YEAR)
SELECT DATE_ADD(NOW(), INTERVAL -1 YEAR)
DATE_SUB
SELECT DATE_SUB(NOW(), INTERVAL 1 SECOND)
UNION(중복 제거된 값), UNION ALL
--------------------------------------------------------------------------
*** 위 테이블에서 아래 테이블결과를 뺄때 >>> EXCEPT(ORACLE DB용) or MINUS(ORACLE DB용)
*** 교집합(INTERSECT, Mysql 지원X )
FULL OUTER JOIN을 Mysql로 구현하고 싶을 때는, LEFT, RIGHT 조인을 모두 활용
문자열 다루기 -> % / IN / NOT IN / BETWEEN A AND B / NOT BETWEEN A AND B
--------------------------------------------------------------------------
A로 시작하는 문자열 -> A %
B로 끝나는 문자열 -> % B
C가 들어있는 문자열 -> % C %
문자열 앞 뒤 글자 색출 활용
LEFT('문자열 or 컬럼명', 왼쪽으로부터 컬럼명 인덱스 ) -> ex) LEFT('giraffi',1) -> 'g'
RIGHT('문자열 or 컬럼명', 오른쪽으롭터 컬럼명 인덱스 ) -> ex) RIGHT('giraffi',1) -> 'I'
WHERE LEFT(CITY,1) NOT IN ('a','e','i','o','u') -> 도시이름 문자열 첫 문자가 모음이 아닌 것
OR RIGHT(CITY,1) NOT IN ('a','e','i','o','u') -> 도시이름 문자열 마지막 문자가 모음이 아닌 것
% 활용
WHERE ~~~ LIKE 'A%' -> 따옴표 반드시
_ 은 한칸으로 취
_ _ %A -> 3번째 문자가 A인 문자열
_ _ A _ _ -> 총 5글자, 그 중 3번째 문자가 A인 문자열
IN 활용 -> OR이 여러개 일때 활용, 여러번 적기 귀찮으니
SELECT * FROM lake
WHERE destination=10 OR destination=20 OR destination=30
두개 다 같은 구문
SELECT * FROM lake
WHERE destination IN(10,20,30)
***** NOT IN 도 응용해서 활용 가능
BETWEEN ~ AND 활용 예시
SELECT * FROM lake
WHERE destination BETWEEN 10 AND 30
***** NOT BETWEEN 도 응용해서 활용 가능
대/소문자 변환함수
--------------------------------------------------------------------------
UPPER
LOWER
INITCAP('문자열') - 첫 글자만 대문자 변환
제어함수
--------------------------------------------------------------------------
1) SUBSTR - 문자열 자르기
SUBSTR('문자열',시작위치,길이) -> 오라클 기준 숫자시작은 1
ex) SUBSTR('HELLO_KITTY',3,6) -> LLO_KI
123456
2) INSTR - 내가 찾고자하는 문자열이 전체 문자열에서 몇번째 위치에 있는지 위치를 알려줌
INSTR('문자열','비교하고자 하는 값',시작위치, 몇 번째 비교값인지)
ex) INSTR('HELLO_KITTY',T,1,2) -> 두번째 T가 시작 위치로부터 몇 번째에 위치해 있는지?
12345678910
=> 10
*** 시작위치가 1이 아닐경우, 시작위치 전의 문자는 비교하지 않음, 번호는 시작위치가 1일때와 동일
INSTR('HELLO_KIOTTY','K',1,1) => 7
INSTR('HELLO_KIOTTY','K',5,1) => 7
INSTR('HELLO_KIOTTY','O',6,2) => 0 >>> 6 번째부터 검색하기 때문에 2번쨰 O가 없다고 생각
INSTR('HELLO_KIOTTY','O',6,1) => 9
3) CONCAT - 문자열 병합
CONCAT('안녕','하세요')
보통 CONCAT 보다는 || 를 많이 활용
'안녕'||'하세요' -> '안녕하세요'
4) REPLACE - 특정문자를 다른문자로 변환
REPLACE('문자열','찾을문자','변환문자')
ex) REPLACE('HELLO_KITTY','H','C') => 'CELLO_KITTY'
문자열 채우기 함수
--------------------------------------------------------------------------
1) LPAD - 지정한 길이만큼 왼쪽부터 특정문자로 채우기
LPAD('문자열',총 문자길이,'채움문자')
ex) LPAD('admin',10,'*') => *****admin
2) RPAD - 지정한 길이만큼 오른쪽부터 특정문자로 채우기
ex) RPAD('admin',10,'*') => admin*****
제거함수(두번째 argument 생략가능, 생략시 단순 공백제거 기능)
--------------------------------------------------------------------------
1) LTRIM - 문자열의 왼쪽 공백을 제거하거나, 문자열 왼쪽의 반복적인 문자를 제거
LTRIM('문자열','반복되는 문자')
ex) LTRIM('AAABBB','A') => 'BBB'
ex) LTRIM(' AAABBB') => 'AAABBB'
ex) LTRIM('ABABBBBC','AB') => 'BBBC' -> 왼쪽 반복문자열만 제거
ex) LTRIM('AB ABBBBC','AB') => ' ABBBBC' -> 왼쪽 반복문자열만 제거
12 12
ex) LTRIM('ABCAB DCCCBB','ABC')
=> ABC가 하나의 세트로 되어있는 구성을 제거하는 것이 아님
=> 반복되는 문자 여러개를 입력한 경우, 왼쪽에 개별 문자가 있는지 하나씩 체크해서 없앰
=> 왼쪽에서부터 'A','B','C' 가 있는지 각각을 검사해서 제거
'ABCAB' 까지 삭제
=> ' DCCCBB'
1 >> 위치
2) RTRIM - 문자열의 오른쪽 공백을 제거하거나, 문자열 오른쪽의 반복적인 문자를 제거
"
"
3) TRIM - 문자열의 양쪽 공백을 제거하거나, 문자열 양쪽에서 지정된 문자를 제거
TRIM('문자열')
TRIM('제거할 문자' FROM '문자열')
TRIM(' HELLO_KITTY ') => 'HELLO_KITTY'
TRIM('H' from 'HHELLO_KITTYH') => 'ELLO_KITTY'
TRIM('A' from 'AACDEFA') => 'CDEF'
TRIM(옵션, '제거할 문자' FROM '문자열')의 형태로도 사용가능
** 옵션을 쓰지 않으면 both로 인식
- 옵션: leading, trailing, both
1) leading - 문자열 앞 반복 문자 제거
ex) TRIM(LEADING 'A' FROM 'AAACDEAAA') = > 'CDEAAA'
2) trailing - 문자열 뒤 반복 문자 제거
ex) TRIM(TRAILING 'A' FROM 'AAACDEAAA') = > 'AAACDE'
3) both - 문자열 앞/뒤 반복 문자 제거 = 안써도 됨, 생략하면 both 로 인식
ex) TRIM(BOTH 'A' FROM 'AAACDEAAA') = > 'CDE'
기초 함수 세부 활용
2023. 6. 25. 06:14