LOWER,UPPER
대문자 소문자 바꿔주는 예제.
테이블안에 대문자로 들어있는데, 값을 뽑아올때는 그런거 상관없이 뽑아온다면 차라리 데이터를 다 소문자로 바꿔서 검색을 할수 있다.
SELECT pname, LOWER(pname) FROM employee; SELECT pname, UPPER(pname) FROM employee; 조금더 응용을 해보자면 SELECT pname, depno FROM emp WHERE LOWER(pname) = 'john' ; |
CONCAT
글자까지 합쳐서 가져오기
SELECT pname||'의 연봉은'||salary||'입니다' AS info FROM employee; 별칭을 이용해서 응용을 해본다. ||은 연결함수고, ||대신 concat함수를 이용해도 된다. SELECT concat(concat(concat(pname,'의 월급여는'),salary),'입니다') AS info FROM employee; |
SUBSTR
Substring으로 글자 잘라오기. 밑의 결과는 love를 잘라온다.
사실, doong은 쓰레기값하나가 들어가 있는 dummy테이블밖에 없다. 왜냐면 FROM절은 생략할수없어서 무슨 테이블을 쓰긴써야하기때문에 그냥 빈테이블을 쓰는거다
SELECT substr('i love you',3,4) FROM ddong |
l자부터 (세번째 알파벳) 4개를 가져오란것이다.
관습적으로 똥이 아니라 dual로 쓴다고 한다.
마찬가지로 sysdate등도, 테이블값 하나하나마다 다 가져오게되는 대참사가 일어날수 있기 때문에 이 더미 테이블을 이용해서 현재시각을 알아낼수 있다.
INSTR
you라는 문자를 찾는중 두번째 놈의 위치를 찾아준다
SELECT instr('i love you you','you',1,2) FROM ddong |
출력은 12가 뜬다
-1은 오른쪽부터 찾게 된다.
SELECT instr('i love you you','you',1,2) ,instr('i love you you','you',-1) FROM ddong |
만약
'you'대신 'me'를 준다면 0이 뜰것이다
종합예제로, 이메일 앞의 아이디를 한번 잘라와보자
select substr(email,1,instr(email,'@')-1) from userinfo |
RTRIM
알트림? 은 오른쪽의 공백을 끊어내는 놈이다.
SELECT RTRIM('i love you ') FROM ddong; |
오른쪽의 공백이 막 들어가 있을때 저 you 후에 오는 공백을 없앨수있다.
공백이 아닌 문자를 제거하는 놈은 TRIM이다. 대신 인자로 지정된 문자를 넣어줘야 그 문자가 나오기 전까지 지운다. 사실 공백제거말고는 쓸일이 없기때문에, 그냥 둘의 결과가 같을것이다.
LENGTH LENGTHB
LENGTH 는 문자를 세주고, LENGTHB는 바이트기준으로 글자를 세기때문에 영어나 숫자는 그놈이 그놈이지만 한글은 1바이트가 아니기 때문에 바이트의 크기를 돌려준다.
ROUND TRUNK
SELECT round(3.141590202020202) FROM ddong; |
이렇게 하면 소수이하 첫번째 자리임!
SELECT round(3.141590202020202, 5) FROM ddong; |
이렇게 하면 다섯자리까지 나오라는 것이다. 여섯자리에서 반올림이 되서 다섯자리에서 고고싱할것이다. 3.14159가 튀어나옴
SELECT round(3.141590202020202, -1) FROM ddong; |
이렇게 하면 십의자리까지 나온다. (일의 자리 반올림)
TRUNK는 버림이다!!
MOD
modulus의 약자로써, 나머지를 구해주는 거시기다.
SELECT mod(10,3) FROM ddong; |
몫을 구할때는 그냥 10/3을 라운드하거나 해서 쓰면된다. MOD는 %기능인것이다.
SYSDATE
sysdate + 1, sysdate - 1
처럼 어제의 날짜나 내일의 날짜를 구할수 있다
근데 월을 더하고 싶다 뭐 이런것도 있다. 이런건 함수를 이용하면 편하다
SELECT add_months(sysdate, 2) FROM ddong; |
근속일수를 구하고 싶으면 sysdate - hiredate 로 구할수있다. 1이 하루기 때문에 근속일수다. 만약 월수를 계산하고 싶으면
SELECT months_between(sysdate, hiredate) FROM employee; |
이건 요일임! (1이 먼데이인듯하다)
SELECT next_day(sysdate, 1) from ddong; |
last_day는 그 해당하는 월의 마지막 날짜가 튀어나온다
이렇게 DB가 제공하는 함수를 잘 이용한다면, ID가 이메일형식을 가지고 있어도 이 데이터를 가지고 가공을 쉽게 할수 있을것이다.
'데이터베이스' 카테고리의 다른 글
[오라클]조인 (이너조인, 아우터조인) (0) | 2014.05.12 |
---|---|
[오라클] 유용한 명령어 - 데이터변환 (0) | 2014.05.12 |
MySQL 데이터타입 (0) | 2014.05.09 |
아주 기본적인 CRUD DB명령어 (0) | 2014.05.09 |
Naming Service(JNDI)에서 connection pool 찾기 (0) | 2014.05.09 |