Database/Oracle2024. 12. 13. 13:22

단순한 case when then else end 를 대체 할수 있다.

DECLARE
    data_type VARCHAR2(50); -- 변수 선언
    result VARCHAR2(50);  -- 결과를 저장할 변수
BEGIN
    -- data_type 변수에 값 할당
    data_type := 'C'; -- 여기서 값을 변경하여 테스트 가능

    -- DECODE를 사용하여 결과 저장
    SELECT DECODE(data_type, 'A', '1111', 'B', '2222', 'C', '3333', 'D', '444', '0000')
    INTO result
    FROM DUAL;

    -- 결과 출력
    DBMS_OUTPUT.PUT_LINE('TYPE: ' || data_type || ', result: ' || result);
END;

Posted by 비니미니파파
Database/Oracle2024. 8. 16. 10:42

소숫점 자리수를 표시할 때 화면에서 정렬을 위해 0으로 채워달라는 경우가 있다.

예 ) 0.123 -> 0.12300

FM (Fill Mode) 을 사용하자.

SELECT TO_NUMBER('0.123') AS VAL FROM DUAL

-> 0.123

SELECT TO_CHAR(TO_NUMBER('0.123'),'FM999,999,990.00000') AS VAL FROM dual;

-> 0.12300

많이 사용하는 라운드(ROUND:반올림)와 같이

SELECT TO_CHAR(ROUND(TO_NUMBER('0.123'),5),'FM999,999,990.99999') AS VAL FROM dual;

FM 에 대해서 공부하려면 

https://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements004.htm#SQLRF00210

 

Format Models

The total length of a datetime format model cannot exceed 22 characters. The default datetime formats are specified either explicitly with the NLS session parameters NLS_DATE_FORMAT, NLS_TIMESTAMP_FORMAT, and NLS_TIMESTAMP_TZ_FORMAT, or implicitly with the

docs.oracle.com

 

끝 

Posted by 비니미니파파
Database/Oracle2024. 7. 12. 11:40

Table 복사

* 테이블 변경 시 테이블 자체를 백업 해 놓고 싶을때 자주 사용.

CREATE TABLE [TBL_NEW_NAME] AS SELECT * FROM [TBL_NAME]

CREATE TABLE TBL_MEMBER_BACKUP AS SELECT * FROM TBL_MEMBER

 

Posted by 비니미니파파
Database/Oracle2024. 4. 24. 15:50

사용 /*+ parallel( ) */ 

SELECT
      /*+ parallel(TBL1,4) parallel(TBL2,4) */ 
FROM TBL_TEST1 TBL1, TBL_TEST2 TBL2
WHERE TBL1.USER_NAME = TBL2.USER_NAME

임시 정리

Posted by 비니미니파파
Database/Oracle2020. 6. 4. 09:06

12 버전 이상에서는 rownum 으로 처리 할 필요가 없다.

OFFSET 시작번호 ROWS FETCH NEXT 페이지보여줄갯수 ROWS ONLY

OFFSET 0 ROWS FETCH NEXT 20 ROWS ONLY

 


select 
    user_id
   , user_name
from tbl_user
order by user_id
OFFSET 0 ROWS FETCH NEXT 20 ROWS ONLY

 

Posted by 비니미니파파
Database/Oracle2016. 3. 2. 18:15

다른 계정에 시퀀스 권한을 주고자 할때는

grant select,alter on ORGUSER.S_TESTTBL to OTHUSER;

grant select,alter on 원계정.시퀀스명 to 타겟계정;

끝.

Posted by 비니미니파파
Database/Oracle2015. 2. 11. 16:45

오늘 날짜 기준으로 1주일 날짜를 가져와야 함.

원하는 결과 ( 오름 차순 )

2015-02-05
2015-02-06
2015-02-07
2015-02-08
2015-02-09
2015-02-10
2015-02-11

SELECT
to_char(sysdate-7 + LEVEL,'YYYY-MM-DD') AS rdate
FROM dual
CONNECT BY LEVEL <= 7  

원하는 결과 ( 내림차순 )

2015-02-11
2015-02-10
2015-02-09
2015-02-08
2015-02-07
2015-02-06
2015-02-05

SELECT
to_char(SYSDATE + 1 - LEVEL,'YYYY-MM-DD') AS rdate
FROM dual
CONNECT BY LEVEL <= 7  
  

Posted by 비니미니파파