티스토리 뷰

-- 테이블 데이터 백업
CREATE TABLE t_user_back_20220107 AS SELECT * FROM t_user WHERE COMPANYCODE = '회사코드';

-- 테이블 데이터 원복
MERGE INTO T_USER tu USING T_USER_BACK_20220107 tub ON (tu.userNo=tub.userNo)
WHEN MATCHED THEN UPDATE SET tu.loginId=tub.loginId, tu.authKey=tub.authKey, tu.userKey=tub.authKey;

-- loginId, authKey, userKey 기존 5자리에서 8자리로 업데이트
-- 기존 5자리가 모두 숫자로 되어 있는 경우만 업데이트
UPDATE t_user SET 
	loginId = '000' || loginId
	, authKey = CASE WHEN LENGTH(authKey) = 5 THEN '000' || authKey ELSE authKey END
	, userKey = CASE WHEN LENGTH(userKey) = 5 THEN '000' || userKey ELSE userKey END
WHERE COMPANYCODE = '회사코드' AND REGEXP_INSTR(LOGINID ,'[^0-9]') = 0 AND LENGTH(loginId) = 5
-- 이미 8자리 존재할때 제외
AND ('000' || loginId) NOT IN (
	SELECT loginId FROM (
		SELECT userNo, CASE WHEN LENGTH(loginId) = 5 THEN '000' || loginId ELSE loginId END AS loginId FROM t_user WHERE COMPANYCODE = '회사코드' AND REGEXP_INSTR(LOGINID ,'[^0-9]') = 0
	) t
	GROUP BY loginId
	HAVING COUNT(*) > 1
);

'DB > Oracle' 카테고리의 다른 글

[oracle] lock 해제  (0) 2021.10.14
[Oracle] group by 소계  (0) 2021.03.02
[Oracle] ORA-02292: 무결성 제약조건 확인  (0) 2020.02.24
[Oracle] 데이터 복원  (0) 2020.02.20
[Oracle SQL Developer] 데이터베이스 복사  (0) 2020.02.11
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함