[Oracle] 오라클 - 단일행 문자 함수 (LOWER/UPPER/INITCAP/SUBSTR)
by mini_min
[Oracle]오라클
- 단일행 문자 함수 (LOWER/UPPER/INITCAP/SUBSTR)
✔️ 단일행 문자 함수?
단일행 문자 함수의 연산 대상은 '문자'가 된다. 하지만, 반환 값은 함수에 따라, 문자가 될 수도 있고 숫자가 될 수도 있다. 숫자 값을 반환하는 문자 함수는, 모든 문자 데이터 유형을 인수로 사용할 수도 있다!
💡 단일행 문자 함수 종류
- LOWER(char) : 모든 문자 소문자로 변환
- UPPER(char) : 모든 문자 대문자로 변환
SELECT UPPER('SEOUL'), UPPER('KOREA') FROM dual;
SELECT * FROM col WHERE tname = UPPER('emp');
--자료사전 안에 컬럼, 테이블명 모두 대문자로 저장
- INITCAP(char) : 단어의 첫 글자만 대문자로 하고 나머지는 소문자로
SELECT INITCAP('SEOUL korea') FROM dual; --Seoul Korea
💡 해당 문자 함수의 경우, 띄어쓰기로 단어를 구분한다. 그래서 seoul 과 korea 따로 첫글자가 대문자로 변환됨
- SUBSTR(char, position [, substring_length ]) : 특정 위치의 문자열 반환
특정 위치의 문자열을 반환한다고 했는데, 자바는 첫 문자 위치가 '0' 이었지만, 오라클에서는 첫 문자 위치가 '1'로 시작한다. (자바랑 헷갈리지않기!)
SELECT SUBSTR('Seoul Korea', 7, 3) FROM dual; --7번째부터 3개 가져와
SELECT SUBSTR('Seoul Korea', -5, 3) FROM dual; --뒤에서부터 5번째.
SELECT SUBSTR('Seoul Korea', 7) FROM dual; --앞에서부터 끝까지
💡 -n : 시작 위치를 음수로 지정하면, 뒤에서부터 n번째 위치에서 찾기를 시작한다.
🔒 문제
-- 1900년대 서울사람. name, rrn, city, sal
SELECT name, rrn, city, sal
FROM emp
WHERE SUBSTR(rrn, 8, 1) IN(1,2) AND city='서울';
-- 78~82년생 ((substr 두 번 써서 만들 수도 있음)
IN 을 사용해서 작성해도 괜찮고, SUBSTR 을 AND 연산자와 같이 사용해도 괜찮다.
SELECT name, rrn, city, sal
FROM emp
WHERE SUBSTR(rrn, 1, 2) >='78' AND SUBSTR(rrn, 1,2) <='82';
-- 성이 '김씨' 인 사람들
SELECT name, rrn, city, sal
FROM emp
WHERE SUBSTR(name, 1,1) IN '김';
-- 홀수 달에 태어난 사람들을 급여로 내림차순하기
SELECT name, rrn, city, sal
FROM emp
WHERE MOD(SUBSTR(rrn, 3, 2), 2)='1'
ORDER BY sal DESC;
💡 굳이 두자리 수로 '월'을 추출하지 않아도, 한자리 수로 '월'을 추출해도 홀수달/짝수달을 구할 수 있다.
'SQL쿼리' 카테고리의 다른 글
[Oracle] 오라클 - 단일행 문자 함수 (LPAD/RPAD/TRIM/TRANSLATE) (0) | 2022.08.06 |
---|---|
[Oracle] 오라클 - 단일행 문자 함수 (INSTR/LENGTH/REPLACE/CONCAT) (0) | 2022.08.06 |
[Oracle] 오라클 - 단일행 숫자 함수 (ROUND/TRUNC) (0) | 2022.08.06 |
[Oracle] 오라클 - 단일행 숫자 함수(MOD/REMAINDER/CEIL/FLOOR/ROUND) (0) | 2022.08.06 |
[Oracle] 오라클 - Test 1 (SQL함수_2회차) (0) | 2022.08.06 |
블로그의 정보
개발자 미니민의 개발로그
mini_min