이론을 싫어!

[DB] DB 내장함수 에서 비번 앞 두자리 외에 *처리 하기(Mariadb) 본문

Database

[DB] DB 내장함수 에서 비번 앞 두자리 외에 *처리 하기(Mariadb)

이론을 싫어! 2023. 3. 14. 20:21
반응형

예시) 비밀먼호 앞 두자리 외에 *처리 하기 

concat 함수 (문자열을 연결하고 싶을 때 사용)

concat 함수는 어떤 DBMS냐에 따라 매개변수를 두 개만 받기도 하고 

여러개를 허용해주기도 하기 때문이다.

 


위의 사진 SQL문을 보게 되면 

CONCAT(SUBSTRING(password,1,2,),'**') 을 볼수 있는데 

SUBSTING 은 데이터를 일부 읽어온다는 뜻을 가지고 있다.

즉, password 데이터를 1에서 2까지 만 일거오고 나머지 뒤에 문자열 ** 붙이겠다는 뜻을 가지고 있다.

 

실행을 하게 되면 위의 사진처럼 나오는 걸 볼수 있다.

근데 여기서 문제점은 비밀번호가 없는데 ** 출력되는걸 볼수 있다.

여기서 비밀번호가 없는 곳은 출력이 되지 않게 하기 위해서ㅡㄴ 

CASE WHEN 을 쓰면된다.

CASE WHEN은 조건에 따라 값을 주는건데 자바로 따지면 if, else if,else 라고 생각하면된다.

기본 문법은 

1
2
3
4
5
 CASE 컬럼명 
  WHEN 조건1 THEN 값1
  WHEN 조건2 THEN 값2
 ELSE  값3
 END
cs

 

컬럼이 조건1 일때는 값1을, 조건2 일때는 값2을 반환하고 조건에 맞지 않으면 

 

값3 을 반환하는 것이다.

 

위의 사진의 SQL문을 보면 조건이 password길이가 2이상임녀 concat(substring(password,1,2),'**')이고 

 

조건에 해당하지 않으면 ''을 출력하라는 것이다.

 

위의 SQL문을 실행하게 된다면 

 

위의 사진처럼 password 길이가 2이상인 데이터만 출력이 되는 것을 알수 있다.