SQL 함수
대소문자 변환 함수
LOWER
문제1) 사원들의 이름을 소문자로 변활출력하시오.
SQL> SELECT LOWER(ENAME) FROM EMP;
LOWER(ENAM
----------
smith
allen
ward
jones
martin
blake
clark
scott
king
turner
adams
james
ford
miller
14 개의 행이 선택되었습니다.
문제2) 내가 원하는 문자만 변환해서 출력하시오 'JAVA'
SQL> SELECT LOWER('JAVA') FROM EMP;
LOWE
----
java
java
java
java
java
java
java
java
java
java
java
java
java
java
14 개의 행이 선택되었습니다.
* 중복되는것 하나로 처리
1* SELECT LOWER('JAVA') FROM DUAL
SQL> /
LOWE
----
java
UPPER
SQL> SELECT UPPER('jaVA'), INITCAP('java')
2 FROM DUAL;
UPPE INIT
---- ----
JAVA Java
SQL>
INITCAP
SQL> SELECT UPPER('jaVA'), INITCAP('java')
2 FROM DUAL;
UPPE INIT
---- ----
JAVA Java
SQL>
문자열 길이 반환 함수
LENGTH
문자열의 길이를 반환
EX) LENGTH('홍길동') -> 3
LENGTHB
문자열의 바이트를 수를 반환
EX) LENGTHB('홍길동') -> 6
예제1) LENGTH
SQL> SELECT LENGTH('SMILE'), LENGTH('웃어봐요'), LENGTH('요 렇 게'), LENGTH('^^')
2 FROM DUAL
3 ;
LENGTH('SMILE') LENGTH('웃어봐요') LENGTH('요렇게') LENGTH('^^')
--------------- ------------------ ---------------- ------------
5 4 5 2
예제2) LENGTHB
1 SELECT LENGTHB('SMILE'), LENGTHB('웃어봐요'), LENGTHB('요 렇 게'), LENGTHB('^^')
2* FROM DUAL
SQL> /
LENGTHB('SMILE') LENGTHB('웃어봐요') LENGTHB('요렇게') LENGTHB('^^')
---------------- ------------------- ----------------- -------------
5 8 8 2
문자 조작 함수
CONCAT
예제1)
SQL> SELECT CONCAT('JAVA','전문가'
2 FROM DUAL
3 ;
CONCAT('JA
----------
JAVA전문가
문제1) EMP 테이블에서 사원명 뒤에 '사원'이라는 단어를 붙이세요
SQL> SELECT CONCAT(ENAME,'사원')
2 FROM EMP
3 ;
CONCAT(ENAME,'
--------------
SMITH사원
ALLEN사원
WARD사원
JONES사원
MARTIN사원
BLAKE사원
CLARK사원
SCOTT사원
KING사원
TURNER사원
ADAMS사원
JAMES사원
FORD사원
MILLER사원
14 개의 행이 선택되었습니다.
문제2) SMITH 사번 : 123 출력
SQL> SELECT CONCAT(ENAME=SMITH,' 사번 :', EMPNO)
2 FROM EMP
3 ;
SELECT CONCAT(ENAME,' 사번 :', EMPNO)
*
1행에 오류:
ORA-00909: 인수의 개수가 부적합합니다
* 인수의 개수는 2개이다.
* || : 2개 이상의 문자(열)이나 컬럼이 연결 가능
SQL> SELECT CONCAT(ENAME||' 사번 : ',EMPNO)
2 FROM EMP
3 ;
CONCAT(ENAME||'사번:',EMPNO)
-------------------------------------------------
SMITH 사번 : 7369
ALLEN 사번 : 7499
WARD 사번 : 7521
JONES 사번 : 7566
MARTIN 사번 : 7654
BLAKE 사번 : 7698
CLARK 사번 : 7782
SCOTT 사번 : 7788
KING 사번 : 7839
TURNER 사번 : 7844
ADAMS 사번 : 7876
JAMES 사번 : 7900
FORD 사번 : 7902
MILLER 사번 : 7934
14 개의 행이 선택되었습니다.
SUVSTR (JAVASCRIPT와 다은 언어에서도 사용한다.)
문법)
예제1)
SQL> SELECT SUBSTR('SQL*PLUS',5,4)
2 FROM DUAL
3 ;
SUBS
----
PLUS
예제2)
SQL> SELECT SUBSTR('qwerty',3,4)
2 FROM DUAL
3 ;
SUBS
----
erty
예제3)
1 SELECT SUBSTR('qwerty',-3,1) * - 는 뒤부터 시작된다.
2* FROM DUAL
SQL> /
S
-
r
예제4)
1 SELECT SUBSTR('qwerty',-3)
2* FROM DUAL
SQL> /
SUB
---
rty
문제1) 811119-1234567 에서 성별을 파악하는 수를 추출
SQL> SELECT SUBSTR('811119-1529118',-7,1)
2 FROM DUAL
3 ;
S
-
1
문제2) 위에서 추출한 수가 1이면 'MAIL'이라고 출력
SQL> SELECT 'MAIL'
2 FROM DUAL
3* WHERE SUBSTR('811119-1529118',-7,1)='1'
'MAI
----
MAIL
INSTR
문제 1) 801123-1234567 에서 '-' 자리수 추출
SQL> SELECT INSTR('801123-1234567','-')
2 FROM DUAL
3 ;
INSTR('801123-1234567','-')
---------------------------
7
LPAD, RPAD
예제1)
SQL> SELECT LPAD('TODAY',7,'%') , RPAD('TODAY',7,'#')
2 FROM DUAL
3 ;
LPAD('T RPAD('T
------- -------
%%TODAY TODAY##
문제1) 이름을 오른쪽으로 정렬 하여라.
SQL> SELECT LPAD(ENAME,6)
2 FROM EMP
3 ;
LPAD(ENAME,6
------------
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER
14 개의 행이 선택되었습니다.
LTRIM RTRIM * 비밀번호안에 공백을 임력했어도 기존의 암호와 일치하는지 채크해서 지워주는 역활도 가능
예제1)
SQL> SELECT RTRIM('JOY','J')
2 FROM DUAL
3 ;
RTR
---
JOY
SQL> SELECT LTRIM('JOY','J')
2 FROM DUAL
3 ;
LT
--
OY
예제2)
SQL> SELECT LTRIM(' JOY '), RTRIM(' JOY ')
2 FROM DUAL
3 ;
LTRI RTRI
---- ----
JOY JOY
* 이런 함수들은 함수안에 많이 쓰이기 때문에 복잡하다.
숫자함수
MOD
문법)
MOD(M,N) : M을 N으로 나눈 나머지
예제1)
SQL> SELECT MOD(10,3)
2 FROM DUAL
3 ;
MOD(10,3)
----------
1
FLOOR (바닥)
숫자 값보다는 작거나 같은 정수
CEIL (천장)
숫자값 보다는 크거나 같은 정수
예제1)
SQL> SELECT FLOOR(45.6), CEIL(45.6)
2 FROM DUAL
3 ;
FLOOR(45.6) CEIL(45.6)
----------- ----------
45 46
예제2)
SQL> SELECT FLOOR(-45.6), CEIL(-45.6)
2 FROM DUAL
3 ;
FLOOR(-45.6) CEIL(-45.6)
------------ -----------
-46 -45
TRUNC : 절삭 (소수점 1자리는 0을 의미(기준점), 2자리는 1을 의미, 정수 일의 자리 -1, 십의자리 -2, 백의자리 -3)
SQL> SELECT TRUNC(45.6)
2 FROM DUAL
3 ;
TRUNC(45.6)
-----------
45
ROUND(값, 자릿수) : 반올림 / 소수 1째자리 ->0
예제1)
SQL> SELECT ROUND(34.5,-1), ROUND(34.5,0), ROUND (34.52,1)
2 FROM DUAL
3 ;
ROUND(34.5,-1) ROUND(34.5,0) ROUND(34.52,1)
-------------- ------------- --------------
30 35 34.5
ABS : 절대값
예제1)
SQL> SELECT ABS(-10), ABS(20)
2 FROM DUAL
3 ;
ABS(-10) ABS(20)
---------- ----------
10 20