oracle instr() 함수

sql 2014. 2. 12. 18:47

스트링 값이 컬럼에 포함되어 있는 지 여부를 확인할 때 사용됨.

포함되는 위치값을 반환한다.


 INSTR(비교대상, 비교값, 비교시작위치, 검색된 결과 순번)


SELECT  INSTR('TEST FUNCTION', 'T',1,1) COL1 FROM DUAL; 

 

 COL1

 1



SELECT  INSTR('TEST FUNCTION', 'T',1,2) COL1 FROM DUAL; 

 

 COL1

 4




Posted by 무세1
,

오라클 aes256 암호화

sql 2014. 1. 28. 17:37

1. sys계정으로 암호화 하여 아래 권한을 준다.

grant execute on dbms_crypto to public;


2. 생성한다...  계정이 USER01 이면


CREATE OR REPLACE package body USER01.crypt_ase256

IS

    c_aeskey char(32) := '12345678901234567890123456789012';

    /**

     * encryption type이 아래와 같이 DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5일 경우

     * output_string의 길이는 (int(input_string/16)+1)*32 이다.

     * 즉 input_string의 길이가 100일 경우 output_string의 길이는 224이다.

     *

     * key_string는 32자리로 고정되어야 한다.

     */


    function aes_encrypt (p_str in varchar2, p_keystr in varchar2 := null) return varchar2

    is

        output_string       VARCHAR2(4000);

        encrypted_raw       RAW(2000);

        key_bytes_raw       RAW (32) ;

        encryption_type     PLS_INTEGER :=

                            DBMS_CRYPTO.ENCRYPT_AES256

                            + DBMS_CRYPTO.CHAIN_CBC

                            + DBMS_CRYPTO.PAD_PKCS5;

    begin


        if (p_keystr is not null) and (lengthb(p_keystr) = 32) then

            key_bytes_raw := UTL_RAW.CAST_TO_RAW(CONVERT(p_keystr,'AL32UTF8','US7ASCII'));

        else

            key_bytes_raw := UTL_RAW.CAST_TO_RAW(CONVERT(c_aeskey,'AL32UTF8','US7ASCII'));

        end if ;


        encrypted_raw := DBMS_CRYPTO.ENCRYPT(SRC => UTL_I18N.STRING_TO_RAW(p_str, 'AL32UTF8'), TYP => encryption_type, KEY => key_bytes_raw);

        output_string := RAWTOHEX(encrypted_raw);


        return output_string;


    end aes_encrypt;


    /**

     * key_string는 32자리로 고정되어야 한다.

     */


    function aes_decrypt (p_str in varchar2, p_keystr in varchar2 := null) return varchar2

    is

        output_string       varchar2(2000);

        decrypted_raw       raw(2000);

        key_bytes_raw       raw (32);

        decryption_type     PLS_INTEGER :=

                                DBMS_CRYPTO.ENCRYPT_AES256

                                + DBMS_CRYPTO.CHAIN_CBC

                                + DBMS_CRYPTO.PAD_PKCS5;


    begin


        if (p_keystr is not null) and (lengthb(p_keystr) = 32) then

            key_bytes_raw := UTL_RAW.CAST_TO_RAW(CONVERT(p_keystr,'AL32UTF8','US7ASCII'));

        else

            key_bytes_raw := UTL_RAW.CAST_TO_RAW(CONVERT(c_aeskey,'AL32UTF8','US7ASCII'));

        end if;


        decrypted_raw := DBMS_CRYPTO.DECRYPT(SRC => HEXTORAW(p_str), TYP => decryption_type, KEY => key_bytes_raw);

        output_string := CONVERT(UTL_RAW.CAST_TO_VARCHAR2(decrypted_raw),'US7ASCII','AL32UTF8');


        return output_string;


    end aes_decrypt;


end crypt_ase256;



3. 아래와 같이  사용

select crypt_ase256.aes_encrypt('asssss') from dual


'sql' 카테고리의 다른 글

오라클 병렬 처리 힌트  (0) 2014.02.12
oracle instr() 함수  (0) 2014.02.12
오라클 DB 전체 테이블 컬럼 조회..  (0) 2014.01.23
게시판 내용, 카운트 한번에 가져오는 SQL  (0) 2014.01.23
오라클 CLOB 컬럼 검색 방법  (0) 2014.01.23
Posted by 무세1
,

오라클에서 DB의 테이블 전체를 조회할때..

select * from tab

;

 

그리고 DB의  테이블의 컬럼이름을 조회할때..

 

DBA권한이 있다면...

select  * 

from    dba_tab_columns

where   owner = 'USER'  -> 테이블 소유자

and     column_name like '%컬럼명%'

 

;

 

없다면...

select  * 

from    user_tab_columns

where   owner = 'USER'  -> 테이블 소유자

and     column_name like '%컬럼명%'

 

;

'sql' 카테고리의 다른 글

oracle instr() 함수  (0) 2014.02.12
오라클 aes256 암호화  (0) 2014.01.28
게시판 내용, 카운트 한번에 가져오는 SQL  (0) 2014.01.23
오라클 CLOB 컬럼 검색 방법  (0) 2014.01.23
SQL 열을 행으로 변환  (0) 2014.01.23
Posted by 무세1
,

SELECT BB.* 
FROM (
    SELECT AA.*,ROWNUM RO 
    FROM (
        SELECT   A.seq_no
                 , B.user_nm
                 , COUNT (*) OVER (PARTITION BY NULL) TOTAL
        FROM     AA A
                 , BB B
                 , CC C
        WHERE    A.user_id = B.User_Id
        AND      A.Proc_Stat_Cd = C.COMM_DTL_CD
        AND      A.User_Id = ?
        ORDER BY A.SEQ_NO DESC
      )AA
    )BB
WHERE BB.RO > ? AND BB.RO <= ?



'sql' 카테고리의 다른 글

oracle instr() 함수  (0) 2014.02.12
오라클 aes256 암호화  (0) 2014.01.28
오라클 DB 전체 테이블 컬럼 조회..  (0) 2014.01.23
오라클 CLOB 컬럼 검색 방법  (0) 2014.01.23
SQL 열을 행으로 변환  (0) 2014.01.23
Posted by 무세1
,

select  *

from    AAA

where dbms_lob.instr(clobcol, 'need')>0

'sql' 카테고리의 다른 글

oracle instr() 함수  (0) 2014.02.12
오라클 aes256 암호화  (0) 2014.01.28
오라클 DB 전체 테이블 컬럼 조회..  (0) 2014.01.23
게시판 내용, 카운트 한번에 가져오는 SQL  (0) 2014.01.23
SQL 열을 행으로 변환  (0) 2014.01.23
Posted by 무세1
,

SQL 열을 행으로 변환

sql 2014. 1. 23. 11:17

SELECT *
  FROM (SELECT 'AAA' AS NAME FROM DUAL
  UNION ALL
  SELECT 'BBB' AS NAME FROM DUAL
  UNION ALL
  SELECT 'CCC' AS NAME FROM DUAL
  UNION ALL
  SELECT 'DDD' AS NAME FROM DUAL)
;

 

SELECT MAX(DECODE(MOD(RN, 5), 1, NAME)) NAME1,
    MAX(DECODE(MOD(RN, 5), 2, NAME)) NAME2,
    MAX(DECODE(MOD(RN, 5), 3, NAME)) NAME3,
    MAX(DECODE(MOD(RN, 5), 4, NAME)) NAME4,
    MAX(DECODE(MOD(RN, 5), 0, NAME)) NAME5
  FROM (SELECT ROWNUM RN, NAME
    FROM (SELECT *
      FROM (SELECT 'AAA' AS NAME FROM DUAL
                        UNION ALL
                        SELECT 'BBB' AS NAME FROM DUAL
                        UNION ALL
                        SELECT 'CCC' AS NAME FROM DUAL
                        UNION ALL
                        SELECT 'DDD' AS NAME FROM DUAL)))
 GROUP BY CEIL(RN / 5);

'sql' 카테고리의 다른 글

oracle instr() 함수  (0) 2014.02.12
오라클 aes256 암호화  (0) 2014.01.28
오라클 DB 전체 테이블 컬럼 조회..  (0) 2014.01.23
게시판 내용, 카운트 한번에 가져오는 SQL  (0) 2014.01.23
오라클 CLOB 컬럼 검색 방법  (0) 2014.01.23
Posted by 무세1
,