'함수'에 해당되는 글 7건
- 2012.11.08 [MS-SQL] 날짜 차이 계산
- 2011.11.15 [Oracle] RANK() 함수 Sample
- 2010.11.30 [MSSQL] 날짜 함수
- 2010.06.29 [Oracle] PL/SQL
- 2010.06.28 [Oracle] 함수 정리
- 2009.11.23 [MS-SQL] 함수 모음 및 사용법 1
- 2008.10.21 [Oracle] 함수 모음
[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
'Database / Sql' 카테고리의 다른 글
[Oracle] Toad 실행계획 (0) | 2012.11.23 |
---|---|
[MS-SQL] JOIN UPDATE / DELETE (0) | 2012.11.23 |
[Oracle] Toad for Oracle 기능 및 사용법 (파일첨부) (0) | 2012.11.08 |
[Oracle] 테이블 권한주기 (0) | 2012.11.06 |
[Oracle] PL/SQL - 패키지 (Package) (0) | 2012.11.05 |
[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 |
[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
'Database / Sql' 카테고리의 다른 글
[Oracle] JOIN UPDATE (bypass_ujvc 힌트) (0) | 2011.05.25 |
---|---|
[MSSQL] WHERE 절에 CASE문 추가 (0) | 2011.03.21 |
[Oracle] 9i 이상에서 컬럼명 변경 (0) | 2010.11.11 |
[MSSQL] 테이블 복사 (0) | 2010.10.20 |
[Oracle] 다른 테이블 조인해서 UPDATE 하기 (0) | 2010.09.05 |
[Oracle] PL/SQL
- PL/SQL 은 Oracle’s Procedural Language extension to SQL. 의 약자 입니다.
- SQL문장에서 변수정의, 조건처리(IF), 반복처리(LOOP, WHILE, FOR)등을 지원하며, 오라클 자체에
내장되어 있는 Procedure Language입니다
- 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에 관해서만 정의될 수 있습니다.
'Database / Sql' 카테고리의 다른 글
[Oracle] 다른 테이블 조인해서 UPDATE 하기 (0) | 2010.09.05 |
---|---|
[Oracle] TOAD 기본 단축키 (0) | 2010.08.05 |
[Oracle] 함수 정리 (0) | 2010.06.28 |
SELECT INTO와 INSERT SELECT (0) | 2010.06.21 |
[Oracle] 윈도우7에 Oracle 10g 설치 에러 발생시 (0) | 2010.05.31 |
[Oracle] 함수 정리
:: 소수점 이후의 값은 무조건 올림하는 함수.
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를 돌려준다.
'Database / Sql' 카테고리의 다른 글
[Oracle] TOAD 기본 단축키 (0) | 2010.08.05 |
---|---|
[Oracle] PL/SQL (0) | 2010.06.29 |
SELECT INTO와 INSERT SELECT (0) | 2010.06.21 |
[Oracle] 윈도우7에 Oracle 10g 설치 에러 발생시 (0) | 2010.05.31 |
[Oracle] SYSDATE를 이용한 날짜 및 시간 조정 (0) | 2010.05.11 |
[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) 결과 >> 0
-- 인수값이 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()
'Database / Sql' 카테고리의 다른 글
[MS-SQL] 다른 테이블 조인해서 UPDATE 하기 (0) | 2010.03.03 |
---|---|
ntwdblib.dll (1) | 2009.11.30 |
[Oracle] DML 절에 With Check option 조건 (0) | 2009.06.30 |
[Oracle] 오라클 객체(4) [SYNONYM] (0) | 2009.04.15 |
[Oracle] 오라클 객체(3) [SEQUENCE(시퀀스)] (0) | 2009.04.15 |
[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 |