2012. 11. 8. 14:39

[MS-SQL] 날짜 차이 계산

DATEDIFF 함수

 

입력받은 두 날짜 또는 시간이 얼마나 차이가 나는지 계산

 

OPTION : DD(일), HH(시), MI(분), SS(초), MS(밀리초)

 

 

[예제]

 

SELECT DATEDIFF( DD, '2012-11-06 11:34', GETDATE())
→ 2

 

SELECT DATEDIFF( HH , '2012-11-07 11:30', '2012-11-08 14:44')
→ 27

 

SELECT DATEDIFF( MI , '2012-11-07 11:30', '2012-11-08 14:44')
→ 1634

 

SELECT DATEDIFF( HH, '11:30', '14:44')
→ 3

 

 

2011. 11. 15. 10:50

[Oracle] RANK() 함수 Sample

SELECT X.BAYONG, X.YONGNM, X.GADAMT, 
             RANK() OVER(ORDER BY X.GADAMT DESC) RNKAMT
   FROM ( SELECT A.BAYONG, B.YONGNM, SUM(A.CHARGE + A.DLVAMT) GADAMT
                  FROM INVCON A
                    JOIN YNGMST B
                      ON B.YONGCD = A.BAYONG
                WHERE A.JBDATE BETWEEN '2011-11-01' AND '2011-11-02'
                GROUP BY A.BAYONG, B.YONGNM
             ) X
  ORDER BY RNKAMT

>>

BAYONG YONGNM     GADAMT   RNKAMT
--------- ---------- ---------- ----------
TG11        남대구         8909456          1
SEB8        광장            8540758          2
KGB3       파주탄현       8163140          3
JN55        장흥             7447275          4
KG14       공단안산        7071694          5
...

'Database / Sql' 카테고리의 다른 글

[Oracle] 오라클 버전 확인  (0) 2011.11.16
[Oracle] ORA-01476 : 제수가 0  (0) 2011.11.16
[Oracle] PL/SQL PROCEDURE Sample  (0) 2011.11.14
[Oracle] PL/SQL FUNCTION Sample  (0) 2011.11.14
[Oracle] SAVEPOINT & TRANSACTION  (0) 2011.09.02
2010. 11. 30. 20:38

[MSSQL] 날짜 함수

SELECT DATEADD(MM, +1, '2010-08-08')

           , CONVERT(CHAR, DATEADD(MM, +1, '2010-08-08'), 23)

           , SUBSTRING(CONVERT(CHAR, DATEADD(MM, +1, '2010-08-08'), 23), 1, 7)+'-01'

           , GETDATE()

           , CONVERT(CHAR(10), GETDATE(), 121)

           , DATEDIFF(DD, SUBSTRING(CONVERT(CHAR, DATEADD(MM, +1, '2010-08-08'), 23), 1, 7)
              +'-01', CONVERT(CHAR(10), GETDATE(), 121))

           , DATEDIFF(DD, CONVERT(CHAR(10), GETDATE(), 121), SUBSTRING
           
(CONVERT(CHAR, DATEADD(MM, +1, '2010-08-08'), 23), 1, 7)+'-01')


결과  >>>

2010-09-08 00:00:00.000
2010-09-08                   
2010-09-01
2010-11-30 20:19:45.530
2010-11-30
90
-90

2010. 6. 29. 14:24

[Oracle] PL/SQL

PL/SQL 이란 ?
    -  PL/SQL 은 Oracle’s Procedural Language extension to SQL. 의 약자 입니다.
    -  SQL문장에서 변수정의, 조건처리(IF), 반복처리(LOOP, WHILE, FOR)등을 지원하며, 오라클 자체에      
        내장되어 있는 Procedure Language입니다
    -  DECLARE문을 이용하여 정의되며, 선언문의 사용은 선택 사항입니다.
    -  PL/SQL 문은 블록 구조로 되어 있고 PL/SQL 자신이 컴파일 엔진을 가지고 있습니다
    
PL/SQL의 장점 
    -  PL/SQL 문은 BLOCK 구조로 다수의 SQL 문을 한번에 ORACLE DB 로 보내서 처리하므로 수행속도를
        향상 시킬수 있습니다.
    -  PL/SQL 의 모든 요소는 하나 또는 두개이상의 블록으로 구성하여 모듈화가 가능하다.
    -  보다 강력한 프로그램을 작성하기 위해서 큰 블록안에 소블럭을 위치시킬 수 있습니다.
    -  Variable, Constant, Cursor, Exception을 정의하고, SQL문장과 Procedural 문장에서 사용합니다.
    -  단순, 복잡한 데이터형태의 변수를 선언합니다.
    -  테이블의 데이터 구조와 DataBase의 컬럼럼에 준하여 동적으로 변수를 선언 할 수 있습니다.
    -  Exception 처리 루틴을 이용하여 Oracle Server Error를 처리합니다.
    -  사용자 정의 에러를 선언하고 Exception 처리 루틴으로 처리 가능 합니다.


1. 프로시져
    -  특정 작업을 수행할수 있고, 이름이 있는 PL/SQL 블록으로서. 매개 변수를 받을수 있고, 반복적으로 
       사용할수 있습니다. 보통 연속 실행 또는 구현이 복잡한 트랜잭션을 수행하는 PL/SQL블록을 데이터
       베이스에 저장하기 위해 생성합니다. 
    
     * CREATE OR REPLACE 구문을 사용하여 생성합니다. 
     * IS 로 PL/SQL의 블록을 시작합니다. 
     * LOCAL 변수는 IS 와 BEGIN 사이에 선언합니다.     
    

2. 함수(Function)
    -  보통 값을 계산하고 결과값을 반환하기 위해서 함수를 많이 사용 합니다.
    -  대부분 구성이 프로시저와 유사 하지만 IN 파라미터만 사용 할 수 있습니다.
    -  반드시 반환될 값의 데이터 타입을 RETURN문에 선언해야 합니다.
    -  또한 PL/SQL블록 내에서 RETURN문을 통해서 반드시 값을 반환해야 합니다.

3. package
    -  패키지(package)는 오라클 데이터베이스에 저장되어 있는 서로 관련있는 PL/SQL 프로지져와 함수들의
        집합 입니다
    -  패키지는 선언부와 본문 두 부분으로 나누어 집니다.  

4. 트리거
    -  INSERT, UPDATE, DELETE문이 TABLE에 대해 행해질 때 묵시적으로 수행되는 PROCEDURE 입니다.
    -  Trigger는 TABLE과는 별도로 DATABASE에 저장됩니다.
    -  Trigger는 VIEW에 대해서가 아니라 TABLE에 관해서만 정의될 수 있습니다.

2010. 6. 28. 11:46

[Oracle] 함수 정리

CEIL

:: 소수점 이후의 값은 무조건 올림하는 함수.

 

MOD

:: 두 수를 나눈 나머지 값을 구하는 함수.

 

POWER

:: 승수 값을 구하는 함수.

[예] SQL> select POWER(3, 2), POWER(3, -2) from dual;

[결과] 9          .11111111

 

ROUND

:: 반올림 값을 구하는 함수.

[예] SQL> select ROUND(345.123, 0), ROUND(345.123, 2), round(345.123, -1) from dual;

[결과] 345          345.12          350

 

TRUNC

:: 버림 값을 구하는 함수.

[예] SQL> select TRUNC(345.123, 2), TRUNC(345.123, 0), trunc(345.123, -1) from dual;

[결과] 345.1          345          340

 

SIGN

:: 해당 값이 양수면 1, 음수면 -1, 0이면 0을 돌려준다.

[예] SQL> select SIGN(345.123), SIGN(0), SIGN(-345.123) from dual;

[결과] 1          0          -1

 

CHR, ASCII

:: ASCII은 문자로, 문자는 ASCII 값으로 반환하는 함수.

[예] SQL> select CHR(65), ASCII('A') from dual;

[결과] A          65

 

LOWER, UPPER

:: 문자열을 소문자와 대문자로 반환하는 함수.

[예] SQL> select LOWER('My'), UPPER('My') from dual;

[결과] my          MY

 

LPAD(char1, n, char2)

:: n 자리 만큼의 공간에서 char1을 오른쪽에 붙이고, 나머지 공간을 char2로 채운다.

RPAD(char1, n, char2)

:: n 자리 만큼의 공간에서 char1을 왼쪽에 붙이고, 나머지 공간을 char2로 채운다.

[예] SQL> select LPAD('LDH', 10, '#'), RPAD('LDH', 10, '#') from dual;

[결과] #######LDH          LDH#######

 

LTRIM, RTRIM

:: 각 각 오른쪽(LTRIM)과 왼쪾(RTRIM)의 공백(Space)을 제거한다.

 

REPLACE(char1, char2, char3)

:: char1 문자열에서 char2를 char3으로 치환하는 함수.

[예] SQL> select REPLACE('Orange', 'O', 'A') from dual;

[결과] Arange

 

SUBSTR(char1, n, m)

:: char1 문자열의 n번째부터 시작해서 m번째까지의 문자열을 리턴한다.

[예] SQL> select SUBSTR('오라클 Oracle', 1, 3) from dual;

[결과] '오라클'

[예] SQL> select SUBSTR('오라클 Oracle', 7, 9) from dual;

[결과] 'acl'

[예] SQL> select SUBSTR('오라클 Oracle', 10) from dual;

[결과] 'e'

 

SUBSTRB

:: 바이트 단위로 계산하여 문자열을 치환하는 함수.

[예] SQL> select SUBSTRB('오라클 Oracle', 1, 3) from dual;

[결과] '오'

[예] SQL> select SUBSTRB('오라클 Oracle', 7, 9) from dual;

[결과] ' Or'

[예] SQL> select SUBSTRB('오라클 Oracle', 10) from dual;

[결과] 'acle'

 

LENGTH, LENGTHB

:: 문자열의 길이를 나타낸다.

[예] SQL> select LENGTH(운동(축구)), LENGTH(운동(축구)) from dual;

[결과] 6          10

 

INSTR(char1, char2, n, m)

:: char1에서 char2가 포함된 문자열의 위치가 char1을 기준으로 n번째 위치부터 시작해서 m번째로 char2와 같은 위치를 돌려준다.

 

INSTRB(char1, char2, n, m)

:: 바이트 단위로 내용은 위와 같다.

[예] SQL> INSTR('간장콩장공장장', '장', 1, 2), INSTRB(간장콩장공장장', '장', 1, 2) from dual;

[결과] 4          7

[예] SQL> INSTR('Corporate Floor', 'or', 3, 2), INSTRB('Corporate Floor', 'or', 3, 2) from dual;

[결과] 11          11

[예] SQL> INSTR('오라클 Oracle', 'r', 1, 1), INSTRB('오라클 Oracle', 'r', 1, 1) from dual;

[결과] 6          9

 

SYSDATE

:: 현재의 일자와 시간을 의미하고, 기본값으로 오늘일자를 돌려준다.

[예] SQL> select SYSDATE from dual;

[결과] 04/04/19

[예] SQL> select to_char(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') from dual;

[결과] 2004-04-19 00:44:20

 

LAST_DAY

:: 해당 월의 마지막 날짜를 돌려준다.

[예] SQL> select LAST_DAY(SYSDATE), SYSDATE from dual;

[결과] 04/04/30          04/04/19

 

MONTH_BETWEEN(date1, date2)

:: date1과 date2를 월 단위로 계산하여 그 값을 리턴한다. 만약, date1이 date2보다 크면, 양수의 결과가 나온다.

[예] SQL> select MONTH_BETWEEN('2004-01-19', '2004-04-19') from dual;

[결과] -3

 

ADD_MONTHS(date, n)

:: date의 n개월 후의 값을 리턴한다.

[예] SQL> select ADD_MONTHS(SYSDATE, 2), SYSDATE from dual;

[결과] 04/06/19          04/04/19

 

NEXT_DAY(date, n)

:: date를 기준으로 n요일에 해당하는 다음 날짜를 리턴한다.

[예] SQL> select NEXT_DAY(SYSDATE, 2), NEXT_DAY(SYSDATE, 7), SYSDATE from dual;

[결과] 04/04/20          04/04/25          04/04/19

 

TO_CHAR(n), TO_CHAR(n, format), TO_CHAR(date, format)

:: n을 format 형식의 문자로 바꾸는 함수.

[예] SQL> select TO_CHAR(123.456) from dual;

[결과] 123

[예] SQL> select TO_CHAR(123456.789, '999,999.9999') from dual;

[결과] 123, 456.7890

[예] SQL> select TO_CHAR(SYSDATE, 'YYYY') from dual;

[결과] 2004

 

TO_NUMBER(char), TO_NUMBER(char, format)

:: char를 format 형식의 숫자로 바꾸는 함수.

[예] SQL> select TO_NUMBER('123.12') from dual;

[결과] 123.12

[예] SQL> select TO_NUMBER('123.12', '999.999') from dual;

[결과] 123.120

 

TO_DATE(char), TO_DATE(char, format)

[예] SQL> select TO_DATE('20040419') from dual;

[결과] 2004-04-19 00:00:00

[예] SQL> select TO_DATE('20040419', 'YY/MM/DD') from dual;

[결과] 04/04/19

 

AVG(column_name)

:: 해당 컬럼의 평균값을 리턴한다.

 

MAX(column_name)

:: 해당 컬럼에서 제일 큰 값을 리턴한다.

 

MIN(column_name)

:: 해당 컬럼에서 제일 작은 값을 리턴한다.

 

SUN(column_name)

:: 해당 컬럼의 합계를 리턴한다.

 

COUNT(column_name)

:: 조회건수를 리턴한다.

 

NVL(column_name, 대신할 데이터)

:: 해당 컬럼이 Null일 경우, 대신할 문자나 숫자 등을 대신 사용한다.

 

DECODE

:: 연속된 조거문이라고 할 수 있는데, 가장 자주 쓰이는 함수 중에 하나이다.

[예] SQL> select DECODE(idx, 10, '가', 20, '나', 30, '다', 40, '라') from dual;

[설명] idx가 10이면 '가'이고, 20이면 '나'이고, 30이면 '다'이고, ...

 

USERENV

:: 현재 세션의 환경 정보를 반환한다.

ENTRYID : 사용 가능한 Auditing entry Identifier를 반환.
LABEL : 현재 세션의 Label을 반환.
LANGUAGE : 현재 세션에서 사용중인 언어와 테리토리 값을 반환.
SESSIONID : Auditing(감사) Session ID를 반환.
TERMINAL : 현재 세션 터미널의 OS ID를 반환.

 

GREATEST(n1, n2, n3, ...)

:: 숫자나 문자 아무거나 나열하면 그 중에 가장 큰 값을 반환한다.

 

LEAST(n1, n2, n3, ...)

:: 숫자나 문자 아무거나 나열하면 그 중에 가장 작은 값을 반환한다.

 

UID, USER

:: 사용자 ID와 사용자의 OWNER를 돌려준다.


2009. 11. 23. 09:58

[MS-SQL] 함수 모음 및 사용법

1)  Ascii() - 문자열의 제일 왼쪽 문자의 아스키 코드 값을 반환(Integer)
예) SELECT Ascii('abcd')    결과 >> a의 아스키 코드값인 97 반환 

2) Char() - 정수 아스키 코드를 문자로 반환(Char)
예) SELECT Char(97)   결과 >> a 반환 

3) Charindex() - 문자열에서 지정한 식의 위치를 반환
예)  SELECT Charindex('b','abcde')      결과 >>  2
      SELECT Charindex('b','abcde',2)   
결과 >>  2
      SELECT Charindex('b','abcde',3)    
결과 >> 

       -- 인수값이 3개일때 마지막은 abcde 에서의 문자열 검색 시작위치를 말하며
            2
인경우는 bcde 라는 문자열에 대해서 검색
            3
인 경우는 cde 라는 문자열에 대해서 검색 하게 된다. 

4) Difference() - 두 문자식에 SUONDEX  값 간의 차이를 정수로 반환
예)  SELECT Difference('a','b') )  결과 >> 3

5) Left() - 문자열에서 왼쪽에서부터 지정한 수만큼의 문자를 반환
예)  SELECT Left('abced',3)       결과 >> 3 

6) Len() - 문자열의 길이 반환
예) SELECT Len('abced')         결과>>5 

7) Lower() - 대문자를 소문자로 반환
예) SELECT Lower('ABCDE')    결과 >> abcde 

8) Ltrim() - 문자열의 왼쪽 공백 제거
예)  SELECT Ltrim('   AB  CDE')    결과>> AB CDE 

9)Nchar()  - 지정한 정수 코드의 유니코드 문자 반환
예)  SELECT Nchar(20)       결과  >>    

10) Replace -  문자열에서 바꾸고 싶은 문자 다른 문자로 변환
예) SELECT Replace('abcde','a','1')    결과>>1bcde 

11) Replicate()  - 문자식을 지정한 횟수만큼 반복
예) SELECT Replicate('abc',3)              결과>> abcabcabc 

12) Reverse() - 문자열을 역순으로 출력
예)   SELECT Reverse('abcde')             결과>> edcba 

13) Right()  - 문자열의 오른쪽에서 부터 지정한 수 만큼 반환(Left() 와 비슷 )
예) SELECT Right('abcde',3)                 결과>> cde 

14)Rtrim()  - 문자열의 오른쪽 공백 제거
예) SELECT Rtrim(' ab cde  ')               결과>>  ' ab cde'  <-- 공백구분을위해 ' 표시 

15)  Space()  -  지정한 수만큼의 공백 문자 반환
예)  SELECT Space(10)                  결과 >>  '         '   -- 그냥 공백이 나옴
     
확인을 위해서  SELECT 'S'+Space(10)+'E'   결과 >> S        E    

16) Substring()  -  문자,이진,텍스트 또는 이미지 식의 일부를 반환
예) SELECT Substring('abcde',2,3)      결과>>  bcd 

17)Unicode() - 식에 있는 첫번째 문자의 유니코드 정수 값을 반환
예)SELECT Unicode('abcde')              결과 >> 97 

18)Upper() - 소문자를 대문자로 반환
예) SELECT Upper('abcde')              결과>> ABCDE 

19) Isnumeric - 해당 문자열이 숫자형이면 1 아니면 0을 반환 >> 숫자 : 1  , 숫자X :0
예) SELECT Isnumeric('30')       결과 >> 1
     SELECT Isnumeric('3z')        결과 >> 0
 

20) Isdate()  - 해당 문자열이 Datetime이면 1 아니면 0
>> 날짜 : 1   , 날짜 X :0
예) SELECT Isdate('20071231')    결과 >> 1
     SELECT Isdate(getdate())      결과 >> 1

     SELECT Isdate('2007123')      결과
>> 0
     SELECT Isdate('aa')              결과 >> 0
 

※ 날짜및 시간함수 정리 

getdate()  >> 오늘 날짜를 반환(datetime) 
1> DateAdd()   - 지정한 날짜에 일정 간격을 + 새 일정을 반환

예) SELECT Dateadd(s,2000,getdate())  
2> Datediff()  - 지정한 두 날짜의 간의 겹치는 날짜 및 시간 범위 반환

예)SELECT DateDiff(d,getdate(),(getdate()+31)) 
3> Datename() -지정한 날짜에 특정 날짜부분을 나타내는 문자열을 반환

예) SELECT Datename(d,getdate()) 
4> Datepart() -지정한 날짜에 특정 날짜부분을 나타내는 정수를  반환

예) SELECT Datepart(d,getdate()) 
>> Datename , Datepart 은 결과 값은 같으나 반환 값의 타입이 틀림.
 

5> Day() -지정한 날짜에 일 부분을 나타내는 정수를  반환
예) SELECT Day(getdate())       -- 일 반환
     SELECT Month(getdate())   -- 월 반환
      SELECT Year(getdate())       --  년 반환
 

6> Getutcdate() -현재 UTC 시간을 나타내는 datetime 값을 반환
예) SELECT Getutcdate()

2008. 10. 21. 16:29

[Oracle] 함수 모음

Oracle 내장함수 중 유용한 몇몇에 대해 알아본다.

-- 숫자 함수 (Number Function)
ABS(n) : 절대값을 계산하는 함수
   SQL> SELECT ABS(-10) FROM DUAL;      // 결과는 10
CEIL(n) : 주어진 값보다 큰 최소 정수값을 구하는 함수
   SQL> SELECT CEIL(5.1) FROM DUAL;      // 결과는 6
   SQL> SELECT CEIL(-5.1) FROM DUAL;      // 결과는 -5
FLOOR(n) : 주어진 값보다 작거나 같은 최대 정수값을 구하는 함수
   SQL> SELECT FLOOR(5.1) FROM DUAL;      // 결과는 5
   SQL> SELECT FLOOR(-5.1) FROM DUAL;     // 결과는 -6
EXP(n) : 주어진 값의 e의 승수를 구하는 함수
LN(n) : 주어진 값의 자연로그 값을 구하는 함수
MOD(m, n) : m을 n으로 나우어 남은 값을 반환한다.
   SQL> SELECT MOD(5, 3) FROM DUAL;      // 결과는 2
   SQL> SELECT MOD(5, 0) FROM DUAL;      // 결과는 5
POWER(m, n) : m의 n승 값을 구하는 함수
   SQL> SELECT POWER(2, 3) FROM DUAL;      // 결과는 8
ROUND(m, n) : m 값의 반올림을 구하는 함수. n은 소숫점 자릿수를 명시
   SQL> SELECT ROUND(111.126, 1) FROM DUAL;      // 결과는 111.1
   SQL> SELECT ROUND(111.126, -1) FROM DUAL;      // 결과는 110
SIGN(n) : n 값의 부호를 구하는 함수. n > 0일때는 1, n = 0일때는 0, n < 0 일때는 -1
SQRT(n) : n 값의 루트값을 구하는 함수. n은 양수이어야 한다.
TRUNC(n, m) : n 값을 m 소숫점 자리로 반내림한 값을 구하는 함수
   SQL> SELECT TRUNC(10.678, 2) FROM DUAL;      // 결과는 10.67
   SQL> SELECT TRUNC(567.345, -2) FROM DUAL;      // 결과는 500

-- 문자 함수 (String Function)
CONCAT(str1, str2) : 두 문자를 합치는 함수. "||" 연산자와 같은 역할을 합니다.
   SQL> SELECT CONCAT('Oracle', ' Korea') NAME FROM DUAL;      // 결과는 Oracle Korea
INITCAP(str) : 주어진 문자열의 첫 번째 문자를 대문자로 변환시켜 주는 함수
   SQL> SELECT INITCAP('junducki') FROM DUAL;      // 결과는 Junducki
LOWER(str) : 문자열을 소문자로 변환시켜주는 함수
   SQL> SELECT LOWER('JUNDUCKI') FROM DUAL;      // 결과는 junducki
UPPER(str) : 문자열을 대문자로 변환시켜주는 함수
   SQL> SELECT UPPER('junducki') FROM DUAL;      // 결과는 JUNDUCKI
LPAD(str1 , n, str2) : str1 문자열의 왼쪽에 str2 문자열을 str1의 문자열 길이가 n이 되게 채워주는 함수. str1의 문자열이 n보다 클 경우 str1을 n개 문자열 만큼 반환합니다.
   SQL> SELECT LPAD('jin', 5, '-') FROM DUAL;      // 결과는 --jin
RPAD(str , n, char2) : LPAD와 반대로 오른쪽을 채워주는 함수
   SQL> SELECT RPAD('jin', 5, '-') FROM DUAL;      // 결과는 jin--
SUBSTR(str, m, n) : str 문자열의 m 번째 자리부터 n개의 문자열을 구하는 함수
   SQL> SELECT SUBSTR('junducki', 3, 3) FROM DUAL;      // 결과는 ndu
   SQL> SELECT SUBSTR('junducki', -3, 3) FROM DUAL;      // 결과는 cki
LENGTH(str) : str 문자열의 길이를 구하는 함수
   SQL> SELECT LENGTH('junducki') FROM DUAL;      // 결과는 8
REPLACE(str1, str2, str3) : str1 문자열에서 str2과 매칭되는 부분을 str3으로 변환하는 함수. 대소문자를 구분함
   SQL> SELECT REPLACE('Ukzang ukzang', 'U', 'j') FROM DUAL;      // 결과는 jkzang ukzang
INSTR(str1, str2, m, n) : str1 문자열에 str2가 매칭되는 위치를 구하는 함수. m은 str1 문자열의 m 위치에서 부터 검색. n은 매칭되는 횟수를 지정. 매칭되는 것이 없을 때는 0
   SQL> SELECTINSTR('junducki junducki', 'u') FROM DUAL;      // 결과는 2
SQL> SELECT INSTR('junducki junducki', 'u', 3) FROM DUAL;      // 결과는 5
   SQL> SELECT INSTR('junducki junducki', 'u', 3, 2) FROM DUAL;      // 결과는 11
TRIM(str1, str2) : str1 문자열의 양끝의 str2 문자열을 제거하는 함수, str2를 주지 않으면 [공백]을 제거한다.
LTRIM(str1, str2) : TRIM을 왼쪽 끝만 적용
RTRIM(str1, str2) : TRIM을 오른쪽 끝만 적용
VSIZE(str) : str 문자열의 Byte 수를 구하는 함수. NULL이면 NULL이 반환
   SQL> SELECT VSIZe('junducki') FROM DUAL;      // 결과는 8

-- 날짜 함수 (Date Function)
LAST_DAY(d) : 달의 마지막 날을 구하는 함수
   SQL> SELECT LAST_DAY(SYSDATE) FROM DUAL;      // 결과 31-03-2008
ADD_MONTH(m, n) : m의 날짜에 n 달을 더해주는 함수
   SQL> SELECT ADD_MONTH(SYSDATE, 2) FROM DUAL;      // 결과 24-05-2008
MONTH_BETWEEN(m, n) : m 날짜와 n 날짜 사이의 달수를 구하는 함수
   SQL> SELECT MONTHS_BETWEEN(TO_DATE('2008/06/05') , TO_DATE('2008/09/23')) FROM DUAL;     
         // 결과는 -3.880635
ROUND(d, [f]) : d 날짜를 f로 지정한 단위로 반올림을 구하는 함수
   SQL> SELECT ROUND(TO_DATE('2008/08/11'), 'YEAR') FROM DUAL;      // 결과는 2009-01-01
   SQL> SELECT ROUND(TO_DATE('2008/08/11'), 'MONTH') FROM DUAL;      // 결과는 2008-08-01
   SQL> SELECT ROUND(TO_DATE('2008/08/11'), 'DAY') FROM DUAL;      // 결과는 2008-08-11
날짜에 대한 산술 연산
   날짜 + 숫자 : 결과는 날짜. 날짜부터 숫자만큼의 날수가 지난 날짜
   날짜 - 숫자 : 결과는 날짜. 날짜부터 숫자만큼의 날수가 전인 날짜
   날짜 - 날짜 : 결과는 숫자. 두 날짜의 차이

-- 변환 함수 (Convert Function)
TO_CHAR : DATE형, NUMBER형을 VARCHAR2형으로 변환해주는 함수
   SQL> SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD') FROM DUAL;      // 결과는 2008/03/28
TO_DATE : CHAR형, VARCHAR2형을 DATE형으로 변환해주는 함수
   SQL> SELECT TO_DATE('2008/03/28', 'YYYY/MM/DD') FROM DUAL;      // 결과는 2008/03/28
TO_NUMBER : CHAR형, VARCHAR2형을 숫자형으로 변환해주는 함수
   SQL> SELECT TO_NUMBER('12327') FROM DUAL;      // 결과는 12327

-- 기타 함수 (Etc Function)
NVL : NULL 값을 다른 값으로 변환해주는 함수. 모든 데이터 타입에 사용가능.
   SQL> SELECT empno, NVL(comm, 0) FROM emp;
   EMPNO             NVL(COMM, 0)
   ----------------------------------------------
   7499                  300
   7521                  0
DECODE(value, if1, then1, if2, then2, ...) : 데이터들을 다른 값으로 변환해주는 함수. value 값이 if1일 경우 then1으로, if2일 경우 then2로 ...
   SQL> SELECT deptno, DECODE(deptno, 10, 'AAA', 20, 'BBB', 30, 'CCC') FROM emp;
   DEPTNO           DECODE(DEPT
   ------------------------------------------------
   10                       AAA
   30                      CCC
   20                      BBB
GREATEST(n1, n2, ...) : 값 중 최대값을 구하는 함수
   SQL> SELECT GREATEST(10, -5, 16, 20, -11) FROM DUAL;      // 결과는 20
LEAST(n1, n2, ...) : 값 중 최소값을 구하는 함수
   SQL> SELECT LEAST(10, -5, 16, 20, -11) FROM DUAL;      // 결과는 -11 


 

'Database / Sql' 카테고리의 다른 글

[Oracle] 통계 함수  (0) 2008.10.21
[Oracle] 오라클 관련 함수들과 정보들  (0) 2008.10.21
SQL의 종류  (0) 2008.10.08
[Oracle] sid 확인  (0) 2008.10.08
[Oracle] 오라클이란?  (0) 2008.10.08