SQL 코딩테스트 복기 -문자열 부분수정(마스킹)하는 방법(concat + substr)-
1. 문자열 바꾸기
문자열의 앞 두글자를 **로 대체해서 출력하라고 하면 어떻게 해야할까?
구체적으로 위와 같이 주어졌을때, 각 문자열 값들의 앞 두글자를 **로 바꾸고 싶다.
select concat('**',substr(name,3)) as user_id from test;
concat과 substr 함수를 이용해서 바꿀 수 있다
아니 모르면 못풀잖아
2. concat
concat(str1,str2,str3,...)
연결할 문자열들을 나열해서, 하나의 문자열로 만들어준다
3. substr
substr(str,pos,len)
str을 pos부터 시작해서 len만큼 추출
pos는 추출할 문자열 str의 시작 위치 index
index는 1부터 시작하며
다음과 같이 음수 인덱스도 가능하다.
len은 생략가능하며, 생략하면 문자열 끝까지 추출함
다음은 2번부터 길이 5만큼 출력하는 코드
4. 코드 분석
select concat('**',substr(name,3)) as user_id from test;
name의 문자열 값들을 3번부터 끝까지 추출하면 substr(name,3)이고,
'**'과 substr(name,3)을 concat으로 연결하면, name의 앞 두글자를 **로 대체하게 되며,
원래 name인 column명을 user_id로 바꿔서 출력
https://velog.io/@modolee/mysql-substr-concat-replace-part-of-a-string
'프로그래밍 > SQL' 카테고리의 다른 글
SQL 연습 -변수가 특정한 값을 포함하는지 체크하기- (0) | 2023.09.21 |
---|---|
SQL - 시간 데이터 포맷 바꾸기, 특정 시간 이전 데이터 추출하기 (0) | 2023.09.19 |
SQL 코딩테스트 복기 - 알파벳으로 시작하는 데이터 추출하는 방법(정규표현식) (1) | 2023.03.18 |
MYSQL에서 스키마(데이터베이스) 생성하기 (0) | 2023.01.19 |
SQL 코딩테스트 복기 -시간 데이터 다루기, 조건에 맞는 값 추출- (0) | 2023.01.08 |