개발자 미니민의 개발스터디

[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;
💡 굳이 두자리 수로 '월'을 추출하지 않아도, 한자리 수로 '월'을 추출해도 홀수달/짝수달을 구할 수 있다. 

 

 

 

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기