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
운영게시판
최근게시물
MySQL Q&A 30636 게시물 읽기
No. 30636
간단한 쿼리 질문입니다 ㅠㅠ
작성자
쿼리초보
작성일
2013-09-24 15:33ⓒ
2013-09-24 16:25ⓜ
조회수
8,292

 

전화번호 필드에 입력된 데이터를 맨 마지막 네자리만 남기고 모두 * 표시를 하고싶습니다.

예를들어 Phone 필드에 010-1234-5678 요렇게 저장된 데이터가 있다면, 

*********5678 요렇게 update하는 방법을 알고싶습니다. ㅠㅠ

REPLACE와 RIGHT 또는 LEFT 함수를 잘 사용해서 하면 될것 같은데ㅠㅠ



우선 제가 생각한것은 다음과 같습니다.

update TABLE set Phone = (1)  where Phone='010-1234-5678'

여기 1번 란에, 

1) 문자열의 총 자릿수를 구해서 (핸드폰번호, 전화번호, 자릿수가 다 틀릴수 있으므로)

2) REPLACE 함수를 써서 첫자리부터 (총자릿수-4)자리 만큼 * 표시를 해주면 될것 같은데요..

요 두개에 대한 해답을 얻지 못하겠습니다.. 더 쉬운방법이 있는데 제가 모르는것일수도 있구요..

답답합니다.. ㅠㅠ 도움 부탁드려요. ㅠㅠ

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

UPDATE table

SET Phone = concat(repeat('*',length(Phone)-4), substring(Phone,-4))

;

이렇게 하시면 됩니다.

박인호(paerae)님이 2013-09-24 16:25에 작성한 댓글입니다.

LPAD(RIGHT(Phone, 4), LENGTH(Phone), '*')

마농(manon94)님이 2013-09-24 17:23에 작성한 댓글입니다.

 

박인호님 답변감사합니다.concat이랑 repeat 함수를 잘 몰랐네요.. 감사합니다.
마농님 LPAD로 이게 될까 했는데 이런 방법이 있었네요 +.+ 감사합니다.

두분덕분에 잘 해결했습니다. ^^ 

쿼리초보님이 2013-09-24 17:54에 작성한 댓글입니다.
이 댓글은 2013-09-24 17:59에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
30640동일사양의 서버에 데이터 복구시 오류문의. [1]
김성환
2013-09-30
9720
30639mysql 설치중 에러 질문이요 [엑박 수정했습니다ㅜ] [3]
이강산
2013-09-26
8907
30638리눅스 mysql 몇가지 궁금한점이 있습니다 [3]
바보라능
2013-09-25
10128
30636간단한 쿼리 질문입니다 ㅠㅠ [3]
쿼리초보
2013-09-24
8292
30635급질문입니다. [1]
정재호
2013-09-24
8200
30634특정 row의 insert 시간 알아내기 [1]
고형윤
2013-09-24
8245
30633Group by SQL 질문입니다. [2]
조동건
2013-09-23
7745
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.049초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다