database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 41354 게시물 읽기
No. 41354
한글에 대한 RPAD 사용법
작성자
초보
작성일
2017-03-09 17:42:18
조회수
1,107

 안녕하세요. 한글에 대한 RPAD 사용법 문의드립니다.

예를 들어 고객명/전화번호로 구성된 테이블을 일괄적으로 특정부분 *처리를 하려고 합니다.

단, 고객명에는 한글인 사람과 영문인 사람이 혼합되어있으며, 전화번호는 - 포함하여 3구간으로 구성되어있습니다.

홍길동 010-1111-2222

이산 02-2222-3333

Tom miller 070-3333-4444

여기서 영문일 경우 뒤 5자리 / 한글일 경우 뒤  2자리를 * 처리 합니다. (단, 두글자일 경우는 뒤 1자리이고 한글자일 경우는 수정 안합니다.)

전화번호의 경우는 rpad(substr(전화번호,0,instr(전화번호, '-', instr(전화번호,'-')+1)), length(전화번호), '*') 를 하면 일정하게 끝자리 4개가 * 처리 되는데 고객명의 경우는 한글2바이트로 인식해서 그런지 잘 안되네요.

rpad('홍길', length('홍길동'), '*')  이렇게 하면 홍 만 나오네요..

도움 부탁드립니다.

이 글에 대한 댓글이 총 3건 있습니다.

with t as

(

select 'Tom miller' nm from dual union all

select '홍길동' nm from dual

)

select case when substr(nm,1,1) between '가' and '힝' then substr(nm,1,1)||'**'

else substr(nm,1,length(nm)-5)||'*****'

end nm

from t

 

외자 이름이든 뭐든 이름은 **로 처리하는 게 개인정보 보안 차원에서 더 나을 것 같구요.

영문 이름 글자수가 6자리 이하인 경우는 어쩌죠?

손재균(iikii)님이 2017-03-10 10:30:53에 작성한 댓글입니다.
이 댓글은 2017-03-10 10:33:22에 마지막으로 수정되었습니다.

답변 감사드립니다.

모든 케이스에 적용이 되어야 되므로

유저함수를 사용해서 RPAD기능을 만드는게 더 좋을거 같습니다.

 

for 문 사용하여 바이트 만큼 잘라서..

초보님이 2017-03-10 18:12:13에 작성한 댓글입니다. Edit

user function으로 사용하시면 대용량 조회 같은 경우에 엄청 느릴텐데요.

손재균(iikii)님이 2017-03-14 08:45:01에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
41358조회 조건 [3]
아폴론
2017-03-17
965
41356where 절 조건 만드는 질문 [2]
임재흥
2017-03-13
970
41355리눅스 오라클 인스턴스 추가 [1]
webma
2017-03-10
977
41354한글에 대한 RPAD 사용법 [3]
초보
2017-03-09
1107
41353SQL 조회 순서 정리 하는방법
spc
2017-03-09
998
41351리눅스 오라클 인스턴스 추가 [2]
webma
2017-03-09
830
41349특정 값 사이에 있는 값 취하기 ? [2]
헬프미
2017-03-08
897
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2017 DSN, All rights reserved.
작업시간: 0.078초, 이곳 서비스는
	PostgreSQL v9.6.3으로 자료를 관리합니다