본문 바로가기
카테고리 없음

ORACLE 4

by Real Iron 2007. 3. 29.

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