UPDATE SELECT문 관련 쿼리문 질문 드립니다. 0 4 3,894

by NExT맨 [SQL Query] [2013.01.03 15:51:57]




UPDATE test_table
SET parameter = CRYPTO.ENC('암호키', parameter)
(
 SELECT (DECODE(INSTR(A.parameter,' '),A.parameter,SUBSTR(A.parameter,0,INSTR(A.parameter,' ',13,1)-1) 
        || INSTR(A.parameter,'#'),'0',A.parameter,SUBSTR(A.parameter,0,INSTR(A.parameter,'#',13,1)-1))) parameter1
 FROM   (SELECT SUBSTR(parameter,INSTR(parameter,'USR_ID:=',13,1)+8) parameter FROM test_table)A
 WHERE 1 = 1
 AND   REGEXP_LIKE(parameter1,'^[5-8]')  
 AND   NOT REGEXP_LIKE(parameter1, '[a-z]|[A-Z]')
 AND   NOT REGEXP_LIKE(parameter1, '[@/.;*^,★☆#!]|[?]|[-]|[ㄱ-ㅎ]|[ㅏ-ㅣ]' )
 AND   NOT REGEXP_LIKE(parameter1,'[가-황]')
 AND   NOT REGEXP_LIKE(parameter1, '[가-힛].*')
);
 




컬럼의 각 행 안에 특정 값만 추출하여 해당 행에서 곧 바로 암호화하는 업데이트 문을 만드려고 합니다.

행 데이터는 이런식으로 구성되어 있습니다.  ☞☞  Q&A_57982

해당 쿼리를 실행하면 "ORA-00936: 누락된 표현식" 이라고 표시됩니다.

어디를 수정해야 될지 도저히 감이 오질 않네요 .....
by 손님 [2013.01.03 19:54:51]
실행하신 쿼리가 맞으신건지?
우선 FROM 이나 WHERE 절이 와야 할것으로 보이는데요..

저도 잘은 모르지만.. INSTR(A.parameter,' '), INSTR(A.parameter,'#') << 이게 가능한 문법인가요?

by Oracler [2013.01.03 20:13:41]
일단 UPDATE 문의 문법 자체가 틀렸네요.

UPDATE 테이블이름
SET 컬럼1명 = 값, 컬럼2명 = 값, ...
WHERE 조건절;

by 손님 [2013.01.04 09:15:51]
 
SELECT * FROM
(SELECT
DECODE(INSTR(A.parameter,' '),A.parameter,SUBSTR(A.parameter,0,INSTR(A.parameter,' ',13,1)-1) 
|| INSTR(A.parameter,'#'),'0',A.parameter,SUBSTR(A.parameter,0,INSTR(A.parameter,'#',13,1)-1)) AS PARAMETER
FROM (SELECT SUBSTR(parameter,INSTR(parameter,'USR_ID:=',13,1)+8) parameter FROM dual) A
)
WHERE 1 = 1
AND   REGEXP_LIKE(parameter,'^[5-8]')  
AND   NOT REGEXP_LIKE(parameter, '[a-z]|[A-Z]')
AND   NOT REGEXP_LIKE(parameter, '[@/.;*^,★☆#!]|[?]|[-]|[ㄱ-ㅎ]|[ㅏ-ㅣ]' )
AND   NOT REGEXP_LIKE(parameter,'[가-황]')
AND   NOT REGEXP_LIKE(parameter, '[가-힛].*');




네 이게 셀렉트 문인데 이거는 정상적으로 잘 실행되요. 이거를 업데이트 문장으로 바꾸려는건데 문제는 저 파라미터 컬럼을 가상 열이 아닌 진짜 파라미터 컬럼 자체에서 행 안에 일부 만 업데이트 시켜야 되는데 그걸 모르겠습니다.

by NExT맨 [2013.01.04 09:18:37]
SELECT * FROM
(SELECT
DECODE(INSTR(A.parameter,' '),A.parameter,SUBSTR(A.parameter,0,INSTR(A.parameter,' ',13,1)-1) 
|| INSTR(A.parameter,'#'),'0',A.parameter,SUBSTR(A.parameter,0,INSTR(A.parameter,'#',13,1)-1)) AS PARAMETER
FROM (SELECT SUBSTR(parameter,INSTR(parameter,'USR_ID:=',13,1)+8) parameter FROM tb_if_bpm_001_test) A
)
WHERE 1 = 1
AND   REGEXP_LIKE(parameter,'^[5-8]')  
AND   NOT REGEXP_LIKE(parameter, '[a-z]|[A-Z]')
AND   NOT REGEXP_LIKE(parameter, '[@/.;*^,★☆#!]|[?]|[-]|[ㄱ-ㅎ]|[ㅏ-ㅣ]' )
AND   NOT REGEXP_LIKE(parameter,'[가-황]')
AND   NOT REGEXP_LIKE(parameter, '[가-힛].*');

네 이게 셀렉트 문인데 이거는 정상적으로 잘 실행되요. 이거를 업데이트 문장으로 바꾸려는건데 문제는 저 파라미터 컬럼을 가상 열이 아닌 진짜 파라미터 컬럼 자체에서 행 안에 일부 만 업데이트 시켜야 되는데 그걸 모르겠습니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입