|
'Oracle'에 해당되는 글 8건
DECODE 함수는 데이터 들을 다른 값으로 바꾸어 줍니다. 형식
DECODE(VALUE, IF1, THEN1, IF2, THEN2...)
VALUE 값이 IF1일경우에 THEN1값으로 바꾸어 주고 VALUE값이 IF2일경우에는 THEN2값으로 바꾸어 줍니다. - 예제 -
SELECT deptno,
DECODE(deptno, 10 , 'ACCOUNTING' ,
20 , 'RESEARCH' ,
30 , 'SALES' ,
40 , 'OPERATIONS')
FROM emp ;
- 수행 결과 - DEPTNO DECODE(DEP ---------- ---------- 20 RESEARCH 30 SALES 30 SALES 20 RESEARCH 30 SALES 30 SALES 10 ACCOUNTING 20 RESEARCH 부서가 10번이면 'ACCOUNTING'를 20번이면 'RESEARCH'를 30번이면 'SALES'를 40번이면 'OPERATIONS'를 출력하는 예제 입니다.
================================================
* Oracle Community OracleClub.com
* http://www.oracleclub.com
* http://www.oramaster.net
* 운영자 : 김정식 (oramaster _at_ empal.com)
================================================ ※ oracleclub 강좌를 다른 홈페이지에 퍼가실 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
Trackback Address :: http://kongmks.cafe24.com/trackback/56
사용법LPAD( 출력내용, 표시할 자릿수, 채울내용 ) 예제1)
SELECT LPAD(23, 8, 0) FROM DUAL;
LPAD(23, -------- 00000023
1 rows selected. - 8자리 수를 맞추기 위하여 앞의 빈 공간은 0으로 채웠다. 예제2)
SELECT LPAD('TEST', 5, 'X') FROM DUAL;
LPAD( ----- XTEST
1 rows selected. - 5자리 수를 맞추기 위하여 앞의 빈 공간은 'X'로 채웠다. 예제3)
SELECT LPAD('TEST', 3, 'X') FROM DUAL;
LPA --- TES
1 rows selected. - 3자가 넘어가면 잘라버렸다. 참고 : 보라냥이님 블로그 원문 보기
Trackback Address :: http://kongmks.cafe24.com/trackback/55
|
LPAD ( 출력할 문자, 자릿수, 채울문자 ) RPAD ( 출력할 문자, 자릿수, 채울문자 )LPAD는 출력할 문자 왼쪽(Left)에 '채울문자'를 채워준다.RPAD는 출력할 문자 오른쪽(Right)에 '채울문자'를 채워준다.SELECT RPAD(TO_CHAR( 32 ), 10, '0') FROM DUAL;RPAD(TO_CH----------32000000001 rows selected.SE.. |
값이 Null일때 오류를 발생시키고 오류에 대체 하는 값을 출력한다.
NULL값을 다른 값으로 대체해주는 함수입니다. [형식]
NVL(비교값, 대체값)
[예시]
SELECT NVL(SUM(A), 0) FROM STUDENT
SUM함수 처리과정에서 에러가 발생하였을 경우 기본 값 0을 Return 하게 된다. NULL값이
Mysql에서는 IFNULL이란 함수가 NVL과 동일한 일을 한다. (추가. 2007.12.17)
출처 : 낭길리마님의 블로그 원문 글 보러가기 참고 ================================================ * Oracle Community OracleClub.com * http://www.oracleclub.com * http://www.oramaster.net * 운영자 : 김정식 (oramaster _at_ empal.com) ================================================
Trackback Address :: http://kongmks.cafe24.com/trackback/49
- 기본적 Join 문...
SELECT *
FROM (
SELECT 1
FROM DUAL ) ATable,
(
SELECT 2
FROM DUAL ) BTable;
- 결과 보기 - 1 2 ----------- ----------- 1 2 1 rows selected. - 만약 오른쪽 테이블의 Row 수가 많다면...?
SELECT *
FROM (
SELECT 1
FROM DUAL ) ATable,
(
SELECT 2
FROM DUAL
UNION ALL
SELECT 3
FROM DUAL ) BTable;
- 결과 보기 - 1 2 ----------- ----------- 1 2 1 3 2 rows selected. - 만약 왼쪽 테이블의 Row 수가 많다면...?
SELECT *
FROM (
SELECT 1
FROM DUAL
UNION ALL
SELECT 4
FROM DUAL
UNION ALL
SELECT 5
FROM DUAL) ATable,
(
SELECT 2
FROM DUAL
UNION ALL
SELECT 3
FROM DUAL ) BTable;
- 결과 보기 - 1 2 ----------- ----------- 1 2 4 2 5 2 1 3 4 3 5 3 6 rows selected. - 만약 양 테이블의 Row 수가 같다면...?
SELECT *
FROM (
SELECT 1
FROM DUAL
UNION ALL
SELECT 4
FROM DUAL
UNION ALL
SELECT 5
FROM DUAL) ATable,
(
SELECT 2
FROM DUAL
UNION ALL
SELECT 3
FROM DUAL
UNION ALL
SELECT 6
FROM DUAL) BTable;
- 결과 보기 - 1 2 ----------- ----------- 1 2 1 3 1 6 4 2 4 3 4 6 5 2 5 3 5 6 9 rows selected. - 실험으로 내린 결론 : Row가 적은 쪽의 테이블이 기준이 된다.
: 테이블의 Row 수가 같으면 왼쪽 테이블 기준 - 그렇다면 3개의 테이블일 경우도 Row가 적은 순으로 정렬이 될까? A Table = 1, 2, 3 B Table = 4, 5 C Table = 6 위의 결론에 따른 다면 1순위 C, 2순위 B, 3순위 A가 되야한다.
SELECT *
FROM (
SELECT 1
FROM DUAL
UNION ALL
SELECT 2
FROM DUAL
UNION ALL
SELECT 3
FROM DUAL) ATable,
(
SELECT 4
FROM DUAL
UNION ALL
SELECT 5
FROM DUAL ) BTable,
(
SELECT 6
FROM DUAL ) CTable;
- 결과 보기 - 1 4 6 ----------- ----------- ----------- 1 4 6 2 4 6 3 4 6 1 5 6 2 5 6 3 5 6 6 rows selected.
역시 예상대로 C, B 순으로 테이블이 기준이 잡혔다.
본 실험은 Oracle9i에서 수행되었습니다.
Trackback Address :: http://kongmks.cafe24.com/trackback/46
가정)
CREATE TABLE A
(
DT DATE
);
INSERT
INTO A(DT)
VALUES( TO_DATE('20061230') );
1. BETWEEN 사용 - A.DT BETWEEN '20040101' AND '20041231'
2. TYPE변경 사용 - MS-SQL : CONVERT(VARCHAR(4), A.DT, 112) = '2004' - ORACLE : TO_CHAR(A.DT, 'YYYY') = '2004'
* DATA의 양이 많을 경우 모든 ROW에 대해 문자변환을 수행함으로 속도에 영향을 미침
출처 : 네이버 지식인 답변
<LIKE 명령어 사용시>
SELECT
DAT
FROM A
WHERE TO_CHAR(A.DAT, 'YYYYMMDD') LIKE '2006%'
- 결과 보기 - DT ------------------- 2006/12/30 00:00:00 1 rows selected.
Trackback Address :: http://kongmks.cafe24.com/trackback/45
|
<font style ='font-size: 10pt; font-family: 1024647_10;'>123</font> |
출처 : 네이버 지식인 답변 글
- 데이터딕셔너리와 함께 Oracle에 의해 자동으로 생성되는 테이블 입니다. - 모든 사용자는 DUAL이라는 이름으로 엑세스 할 수 있습니다. - DUAL테이블은 VARCHAR2(1)으로 정의된 DUMMY라는 하나의 열이 있으며 값을 가지는 하나의 행도 포함되어 있습니다. - DUAL테이블은 사용자가 계산이나 사용자 함수등을 실행하고자 할 경우에 유용 합니다.
즉 아래와 같이 실행하면 flag라는 컬럼으로 1과 2로 된 두개의 row를 보여줍니다.
SELECT '1' flag FROM dual
UNION ALL
SELECT '2' flag FROM dual
Trackback Address :: http://kongmks.cafe24.com/trackback/44
SELECT * FROM Test; 의미 : Test테이블의 모든 컬럼을 출력하라.
-------------- One Two -------------- 30 40 50 60 70 80 --------------
SELECT One FROM Test; 의미 : Test테이블의 One컬럼만 보여준다.
----- One ----- 30 50 70 -----
SELECT One PRINT FROM Test; 의미 : Test테이블의 One컬럼만 출력하는데, 출력 제목을 PRINT로 표시한다.
----- PRINT ----- 30 5070 -----
SELECT One, Two TEST FROM Test; 의미 : Test테이블의 One과 Two컬럼을 출력하는데 Two컬럼 제목을 TEST로 표시한다.
-------------- One TEST -------------- 30 40 50 60 70 80 --------------
SELECT a.One, a.Two FROM Test a; 의미 : Test 테이블의 별명으로 a로 지정하였고, a테이블의 One, a테이블의 Two 컬럼을 출력한다.
-------------- One Two -------------- 30 40 50 60 70 80 --------------
SELECT * FROM Test WHERE One = 50; 의미 : Test테이블의 One컬럼의 값이 50인 데이터를 출력하라.
-------------- One Two -------------- 50 60 --------------
SELECT COUNT(*) FROM Test WHERE One = 50; 의미 : Test테이블의 One컬럼의 값이 50인 데이터들의 Count(갯수)를 출력하라.
-------------- COUNT(*) -------------- 1 --------------
SELECT COUNT(*) CNT FROM Test WHERE One = 50; 의미 : Test테이블의 One컬럼의 값이 50인 데이터들의 Count(갯수)를 출력하는데 Count의 제목은 CNT로 하라.
-------------- CNT -------------- 1 --------------
Trackback Address :: http://kongmks.cafe24.com/trackback/34
|