기존학습자료/기초 스킬

기초 함수 세부 활용

gooreumsea 2023. 6. 25. 06:14
시간 더하기, 빼기
--------------------------------------------------------------------------
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'

'기존학습자료 > 기초 스킬' 카테고리의 다른 글

고유값 만들기  (0) 2023.07.02
사용자 함수  (0) 2023.06.25
정규표현식  (0) 2023.06.25