숫자로만되어 잇는 전화번호및 핸드폰 번호에 -를 붙여서 표시 할수 잇나요? 1 3 6,196

by 유환 [Oracle 기초] [2012.07.18 17:14:51]


숫자로만되어 잇는 전화번호및 핸드폰 번호에 -를 붙여서 표시 할수 잇나요?

011-9811-1234
011-111-1111
02-111-1111
051-111-1111
02-1111-1111

전화및 핸드폰 번호에 구분자로 - 를 표시 하고 싶은대요.
데이터는 그냥 숫자로만 들어 있습니다.
이것을 전호에 맞게 -를 구분자로 해서 보여주는 SQL를 만들수 있나요?
그리고 형식에 맞지 않으면 그냥 숫자로만 표시 하고요..
by 부쉬맨 [2012.07.18 17:47:54]
일단 (length)로 길이 를 체크해야겠지요
010-0000-0000 이면 11자리
011-000-0000 10자리
02-000-0000 9자리
031-000-0000 10자리
031-0000-0000 11자리

유형들을 보시면 어차피
9자리는 앞에 2번째에 - 
10자리는 세번째 - 그리고 세번째 - 
11자리는 세번째 - 네번째 - 

이런유형을 만들어보시면될꺼같은데요?
펑션을 만들어서 처리해도되겠고요
case when lengthn = 11 then substr(컬럼,1,3)||-|| 
이렇게 해도될꺼같네요.

형식이라고하면 그러한 형식을 집합으로 만드셔야될꺼고요.그래야지만
형식에 벗어난거에 대한 숫자로 표현할껀데 
위형식이라고 말씀드린건 099 이라는 지역번호는 존재하지않은 번호같은걸 말씀드린거입니다.

by 마농 [2012.07.19 09:03:43]
WITH t AS
(
SELECT '01198111234' tel FROM dual
UNION ALL SELECT '0111111111' FROM dual
UNION ALL SELECT '021111111'  FROM dual
UNION ALL SELECT '0511111111' FROM dual
UNION ALL SELECT '0211111111' FROM dual
)
SELECT tel
     , REGEXP_REPLACE(tel
     , '(02|031|032|033|041|042|043|051|052|053|054|055|061|062|063|064'
       ||'|010|011|016|017|018|019'
       ||'|030|050|060|070|080)'
       ||'(.+)(.{4})'
     , '\1-\2-\3'
     ) tel_new
  FROM t
;

by 농사 [2012.07.19 17:44:53]
와우~
역시 아는게 힘이군요....! 최고 !!
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입