개발/DB
[POSTGRESQL] UPSERT 정리 - 데이터 없으면 INSERT / 있으면 UPDATE
서론이번 프로젝트 하면서 upsert 를 사용하게 되어 정리한다. 소스 insert into car_smr ( car_id , car_nm , car_prc ) select a.car_id , a.car_nm , b.car_prc from car a left outer join car_prc b on a.car_id = b.car_id where a.car_id = #{carId} on conflict (car_id) do update set reg_id = #{regId} , car_id = excluded.car_id , car_nm = excluded.car_nm , car_prc = excluded.car_prc 설명 ON CONFLICT - 특정 컬럼명을 기준으로 데이터 존재 여부 체크. pk가..
[PostgreSQL] 개인정보(이름 / 전화번호) 마스킹 처리
서론 PostgreSQL에서 개인정보를 sql에서 마스킹 처리를 하였는데 간단하게 정리하고자 한다. * 소스는 as test 를 이용하여 확인 소스 -- 이름 : 한글 - 첫번째 3번째 문자 만 노출. 영문 - 앞 4자리만 노출. select case when a.test ~ E'[ㄱ-ㅣ가-힣]' then concat(left(a.test,1), '*',substring(a.test,3,1),repeat('*',length(a.test) -3)) else concat(left(a.test,4), repeat('*',length(a.test) -4)) end as test1 from (select '홍길동' as test) a; //홀*동 -- 휴대전화 select concat(split_part(rege..
[PostgreSQL] oracle dual 같은 기능 사용하기
서론 PostgreSQL에서 sql로 간단하게 dual 이용하여 데이터 노출 방식을 테스트하려고 하였는데 PostgreSQL에는 해당 테이블이 없었다. 소스 -- 현재날짜 select current_date as test; // 2023-09-13 -- 문자열 합치기 select concat('tset', '01') as test; // test01 결론 PostgreSQL는 처음 사용해봐서 방법을 몰랐는데 간단하고 어렵지 않게 사용할수 있었다.