elevne's Study Note
SQL 몇 가지 정리해두기! 본문
자주 사용하는 Oracle 문법 중 가끔 헷갈리는 것들을 기록해두려고 함.
Table에서 특정 Column 선택해서 보기
SELECT COL1, COL2 FROM TABLE1;
(전체보기는 SELECT * FROM TABLE1;)
선택 열 기준 중복값 제외한 데이터 조회
SELECT DISTINCT COL1 FROM TABLE1;
언더바( _ ) Wildcard
SELECT * FROM TABLE1 WHERE COL1 LIKE ‘a_b_c’; (‘_’에는 무슨 값이든 가능)
Charlist Wildcard (charlist안에 들어있는 a~e 알파벳으로 시작하는 데이터를 조회하는 쿼리)
SELECT * FROM TABLE1 WHERE COL1 LIKE ‘[a-e]%';
Join (각 Table의 COL1값이 동일한 것들을 기준으로 Join하는 것)
SELECT TABLE1.COL1, TABLE2.COL4
FROM TABLE1 INNER JOIN TABLE2 ON TABLE1.COL1 = TABLE2.COL1
DATE 비교하기(24시간 기준(Oracle))
Date 형식이 yyyy-MM-dd hh:mm:ss 형식으로 Table에 들어가있을 때
SELECT * FROM TABLE1 WHERE TO_CHAR(COL1, ‘yyyy-MM-dd HH24’) >= ‘2022-10-12 18’;
CONCAT(문자열 합치기(Oracle))
‘문자1’ || ‘문자2’ 혹은
CONCAT(‘문자1’, ‘문자2’)
LPAD (지정한 길이만큼 왼쪽부터 특정문자로 채우는 함수, 특정문자를 지정하지 않으면 공백)
LPAD(‘문자’, 5) => ‘ 문자’
LPAD(‘문자’, 5, ‘a’) => ‘aaa문자’
RPAD는 LPAD와 반대로 오른쪽부터 특정문자로 채우는 함수
NVL(해당 값이 NULL이면 특정값으로 출력하는 함수)
NVL(NULL, 1) => 결과: 1
NVL2(해당 값이 NULL이 아니면 특정값1, NULL이면 특정값2로 출력하는 함수)
NVL2(NULL, 1, 2) => 결과: 2
NVL2(‘null아님’, 1, 2) => 결과: 1
DECODE => 형식 DECODE(컬럼, 조건1, 결과1, 조건2, 결과2, …., 기타)
DECODE(NULL값, NULL, ‘null임’, ‘null아님’) => 결과: ‘null임’
DECODE(NULL아닌값, NULL, ‘null임’, ‘null아님’) => 결과: ‘null아님’
SUBSTR => 형식 SUBSTR(문자열, 시작위치, 길이) => 해당 조건에 맞춰서 문자열 자르는 함수 / 길이를 지정하지 않으면 시작위치부터 끝까지 자름
SUBSTR(‘abcde’, 3, 4) => 결과: ‘cd’
SUBSTR(‘abcde’, -4, 3) => 결과: ‘bcd’ ( -값으로 뒤에서부터 자를 위치 지정하기 가능)
OVER (ORDER BY, GROUP BY 서브쿼리를 개선함)
COUNT(*)OVER(PARTITIAN BY COL1) => COL1의 Group별로 나누어 카운트!
COUNT(*)OVER(ORDER BY COL1) => RowNumber로 사용 가능..(?)
TRIM (공백제거 함수)
TRIM(‘ 문자 ‘) => 결과: ‘문자’
LTRIM, RTRIM은 문자기준 각각 왼쪽, 오른쪽 공백 제거 + 반복적 문자 제거
LTRIM(‘ 문자 ’) => 결과: ‘문자 ’
RTRIM(‘ 12000’) => 결과: ‘ 12’
출처:
'DB > Oracle' 카테고리의 다른 글
MERGE (Oracle) (0) | 2023.01.19 |
---|---|
ORACLE GROUP BY, RANK, ROW_NUMBER (0) | 2022.12.24 |