반응형

DB작업중 데이터를 옴길일이 생겨서 남김.

특정테이블에 다중 SELECT후 나온 데이터와 고정값을 넣을때는 아래와 같이 진행.


INSERT INTO dual_3

            (

                        id   ,

                        coid ,

                        code ,

                        type ,

                        data1,

                        data2

            )

SELECT a.id          ,

       a.coid        ,

       b.code        ,

       'TNT'     AS data1,

       'CONTENT' AS data2

FROM   dual_1 a,

       dual_2 b,

       daul_3 c(+)

WHERE  a.id       = b.id

AND    a.id       = c.id

AND    a.coid     = 'CLINIC'

AND    b.code     = 'ROLL'

AND    c.id IS NULL

반응형

'프로그래밍 > ORACLE' 카테고리의 다른 글

[ORACLE] 접속계정 권한 확인  (0) 2016.12.05
[ORACLE] LIKE  (0) 2016.01.28
[ORACLE] UPDATE SELECT  (0) 2015.04.09
[ORACLE] auto-increment 생성하기.  (0) 2013.12.20
[ORACLE] SESSION KILL  (0) 2013.12.20
반응형

기존 DB의 내용을 변경할일이 있어서 찾아보다 알게됨.


UPDATE시 SELECT를 하는데 테이블이 많은경우.

UPDATE

       /*+BYPASS_UJVC */

       (SELECT a.coid AS coid_a,

               b.code AS coid_b,

               c.coid          ,

               c.code

       FROM    dual_1 a,

               dual_2 b dual_3 c

       WHERE   a.id = b.id

       AND     a.id = b.id

       AND     a.coid IN ('test',

                          'true')

       AND     b.code         = 'ROLL'

       AND     c.id IS NOT NULL

       )

SET    coid = coid_a,

       code = code_b


위와 같이 진행을 하면 된다.

반응형

'프로그래밍 > ORACLE' 카테고리의 다른 글

[ORACLE] LIKE  (0) 2016.01.28
[ORACLE] INSERT SELECT  (0) 2015.04.09
[ORACLE] auto-increment 생성하기.  (0) 2013.12.20
[ORACLE] SESSION KILL  (0) 2013.12.20
[ORACLE] LPAD and INSTR  (0) 2011.08.09
반응형
이번 함수는 비교연산자라 하면 편할것 같다.

사용방법은 간단하다.

select decode(데이터 값, 비교 값, 참일경우 도출값, 거짓일경우 도출값) from dual; 

ex)
select decode(-1,1,3,4) from dual; 
-> 4 
select decode(1,1,3,4) from dual; 
-> 3

이나온다.
참 간단하고 사용하기가 편하나.

case 문과 비슷하나 사용방법이 편리한거 같은데
depth가 길어지면 성능이 저하된다고 한다고 한다.


select decode(데이터 값
, 비교 값1, 참일경우 도출값1, 비교 값2, 참일경우 도출값2, 비교 값3, 참일경우 도출값3, 거짓일경우 도출값) from dual; 

ex)
select decode(-1,1,7,2,8,3,9,0) from dual; 
-> 0 
select decode(2,1,7,2,8,3,9,0) from dual
-> 8

이렇게 되는 식이다.
잊지말자.. 


 
반응형

'프로그래밍 > ORACLE' 카테고리의 다른 글

[ORACLE] SESSION KILL  (0) 2013.12.20
[ORACLE] LPAD and INSTR  (0) 2011.08.09
[ORACLE] sign  (0) 2011.07.22
[ORACLE] translate(특정문자 제거)  (0) 2011.07.22
[Oracle] commit 후 데이터 복구  (2) 2011.03.29
반응형
그제던가.. 일을 하다가 부득의하게 디비 update를 하게됬는데
대상자를 찾던중 필요한 부분을 빼게됬다...  아이런.. 잘모르는데.. ㅜㅡ
인터넷을 미친듯이 뒤지다가 찾은 한녀석.. ㅋㅋ

translate 라는 함수이다.

translate 에대해서 설명하자면 값에서 특정문자들을 쏙쏙 빼준다. ㅋㅋ 이렇게 고마운녀석을 보았다 싶었다.

translate (데이터값, 체크대상문자열, 교환문자열);
이렇게 되어 있는데. 음.. 뭐랄까 이상하다.

두가지 예제를 올려야겠다. 왜나는 이상한 값이 나올까..
오히려 영문을 제외해버리고 숫자만 나온다 원래는 이게 아닌데...
ex1)
select translate('128A5B8C9D4','1234567890ABCD','1234567890') from DUAL 

결과값 -> 1285894 이렇게 나온다.
원래는 순차 적용으로 알고 있는데.. ㄷㄷ 

다음 예제를 보면.. 해깔린다.. 정말.
ex2) 
select translate('128D5B8C9D4','1234567890ABCDEFGHIJKL','ABCDEFGHIJKL') from DUAL

결과값 -> ABHELHID 

이렇게 나온다 예상으로라면 DBCD 이렇게 나와야되는데..

아무튼 숫자는 정확하게 체크를 할수 있다는게 포인트~
숫자만 뽑아 낼때는 상당히 유용하다는것이다.. 

암튼 조심히 써야될꺼 같다.. 아니면 내가 잘못 이해한것일지도.. ㄷㄷ


ps. 다른 분이 만들어 놓은 예제를 약간 손을 봤다.
http://neokido.tistory.com/356 여기서 가져왔다. 
select translate('1tech23', '123456', '45A') from dual;
-> 4tech5A
select translate('222tech', 'ech2', '3itA') from dual; 
->  AAAt3it

음.. 왜 나는 안될까.. 조금더 알아봐야될꺼 같다. 
반응형

'프로그래밍 > ORACLE' 카테고리의 다른 글

[ORACLE] decode  (0) 2011.07.22
[ORACLE] sign  (0) 2011.07.22
[Oracle] commit 후 데이터 복구  (2) 2011.03.29
ORACLE 소수점이하 삭제.  (0) 2010.07.07
ORCLE 자주 사용하는 명령어  (0) 2010.07.07

+ Recent posts