[SQL문제다시풀기] 조건에 맞는 사용자 정보 조회하기 - 정규표현식

silver's avatar
Feb 23, 2025
[SQL문제다시풀기] 조건에 맞는 사용자 정보 조회하기 - 정규표현식

문제

MYSQL

substring 이용

: MYSQL에서는 substring(쪼갤 거, 쪼개기 시작점, 쪼개는 개수)
select user_id, nickname, concat(city," ",street_address1," ",street_address2) 전체주소, concat(substring(tlno,1,3),'-',substring(tlno,4,4),'-',substring(tlno,8,4)) 전화번호 from used_goods_user where user_id in (select writer_id from used_goods_board group by writer_id having count(board_id) >= 3) order by 1 desc

regexp_replace(정규표현식) 이용

: $ 사용
SELECT user_id, nickname, concat(city,' ',street_address1,' ',street_address2) 전체주소 , regexp_replace(tlno, '([0-9]{3})([0-9]{4})([0-9]{4})', '$1-$2-$3') 전화번호 from used_goods_user where user_id in (select writer_id from used_goods_board group by writer_id having count(board_id) >= 3) order by user_id desc

ORACLE

substr 이용

: ORACLE에서는 substr(쪼갤 거, 쪼개기 시작점, 쪼개는 개수)
select user_id, nickname, city||' '||street_address1||' '||street_address2 전체주소, substr(tlno,1,3)||'-'||substr(tlno,4,4)||'-'||substr(tlno,8,4) 전화번호 from used_goods_user where user_id in (select writer_id from used_goods_board group by writer_id having count(board_id) >= 3) order by user_id desc

regexp_replace(정규표현식) 이용

: \ 사용
select user_id, nickname, city||' '||street_address1||' '||street_address2 전체주소, REGEXP_REPLACE(tlno, '([0-9]{3})([0-9]{4})([0-9]{4})', '\1-\2-\3') 전화번호 from used_goods_user where user_id in (select writer_id from used_goods_board group by writer_id having count(board_id) >= 3) order by user_id desc
 

REGEXP_REPLACE

💡
REGEXP_REPLACE는 SQL에서 정규 표현식을 사용하여 문자열을 대체하는 함수로 주어진 문자열에서 특정 패턴을 찾아 다른 문자열로 바꾸는 데 사용된다.
REGEXP_REPLACE(source_string, pattern, replace_string [, match_occurrence [, return_option [, match_parameter]]]) 1. MYSQL REGEXP_REPLACE(TLNO,'([0-9]{3})([0-9]{4})([0-9]{4})','$1-$2-$3') AS 전화번호, ([0-9]{3}): 숫자 3개를 그룹으로 캡처 ([0-9]{4}): 숫자 4개를 그룹으로 캡처 ([0-9]{4}): 다시 숫자 4개를 그룹으로 캡처 이 패턴은 총 11자리 숫자(예: 1234567890)를 세 개의 그룹으로 나누어 캡처 '$1-$2-$3': 대체 문자열. \1, \2, \3는 각각 정규 표현식에서 캡처한 그룹을 참조. $1: 첫 번째 그룹 (3자리 숫자) $2: 두 번째 그룹 (4자리 숫자) $3: 세 번째 그룹 (4자리 숫자) 2. ORACLE REGEXP_REPLACE(TLNO, '(.{3})(.+)(.{4})', '\1-\2-\3') '(.{3})(.+)(.{4})': 정규 표현식 (.{3}): 첫 3개의 문자 (.+): 그 다음의 모든 문자 (.{4}): 마지막 4개의 문자 '\1-\2-\3': 대체 문자열입니다. 캡처된 그룹을 하이픈(-)으로 구분하여 출력 \1: 첫 번째 캡처 그룹(첫 3자리) \2: 두 번째 캡처 그룹(중간 부분) \3: 세 번째 캡처 그룹(마지막 4자리)
Share article

silver