안녕하세요
Q-P-D-01-01-1-000-000001 이라는 데이터를 QPD01011-000-00001 이런식으로 변경하려고하는데요.
update table
set doc_no=SUBSTR(doc_no,0,1)||SUBSTR(doc_no,3,1)||SUBSTR(doc_no,5,1)||SUBSTR(doc_no,7,2)||SUBSTR(doc_no,10,2)||SUBSTR(doc_no,13)
이렇게 처리를 하긴햇으나.. 예를들어 해당쿼리가 2번돌거나 하면 데이터가 비정상적으로 변경되며 변경전데이터가 변경후 데이터가 함께있을때 사용이 불가능한 문제가 있죠..
- 의 특수문자를 5개만 제거하는 방식으로 쿼리할수 있는 방법이 어떻게 될가요?
조건절이 없어서 그렇죠
- 변경 전 : 전체 갱신
- 변경 후 : 변경 대상만 찾아 갱신하도록 조건 추가
WHERE doc_no LIKE '_-_-_-__-__-%'
WHERE LENGTH(doc_no) = 24
-- 1. 갱신전 확인 쿼리 SELECT doc_no , REPLACE(SUBSTR(doc_no, 1, 13), '-') || SUBSTR(doc_no, 14) x FROM t WHERE LENGTH(doc_no) = 24 ; -- 2. 갱신용 쿼리 UPDATE t SET doc_no = REPLACE(SUBSTR(doc_no, 1, 13), '-') || SUBSTR(doc_no, 14) WHERE LENGTH(doc_no) = 24 ;