중성화 여부 파악하기의 문제는 다음과 같다.


이번 문제를 풀기 위해선
1. 동물의 아이디, 이름, 중성화 여부를 출력
2. 중성화가 되어 있다면 O로 출력
3. 중성화가 되어있지 않다면 X로 출력
4. 아이디 순으로 정렬
순으로 접근해야 한다.
우선 동물의 아이디와 이름, 중성화 여부를 출력하겠다.

다음으로는 중성화가 되어있다면 O로,
되어있지 않다면 X로 출력되게끔 하겠다.
이를 위해선 IF 문을 사용해주어야 하는데
CASE문으로도 가능하다.
그러나, 조건이 2가지이니
IF문을 사용하는 것이 더 효율적이라는 판단이 들어
IF문을 사용하기로 했다.
IF문 문법은
IF(조건문, 참일 때 값, 거짓일 때 값)이며,
다른 쿼리 조건문은 아래 글에서 확인 가능하다.
https://djsflsdudn57.tistory.com/90
쿼리 조건문
쿼리 조건문에는 1. IF 2. IFNULL 3. ISNULL 4. CASE 이 있다. IF IF(조건문, 참일 때 값, 거짓일 때 값) 중첩 IF문 사용 가능 IFNULL IFNULL(필드명, '대체할 값') 해당 필드의 값이 NULL일 경우 지정한 값으로 대체
djsflsdudn57.tistory.com
그럼 다시 문제로 돌아가
중성화가 되어있다면 O로,
되어있지 않다면 X로 출력되게끔 하겠다.
중성화 여부 컬럼값으로 Neutered나 Spayed를 포함하고 있다면
O를 출력하여야 하고, 아니라면 X를 출력해야한다.
따라서 조건에는 'Neutered나 Spayed를 포함하고 있다면' 이 들어가야 하고
참일 경우의 값으로는 'O'이,
거짓일 경우의 값으로는 'X'가 들어가야 한다.
조건의 경우 Neutered나 Spayed를 포함하고 있을 경우를 말하고 있기에
OR연산자로 서로를 묶어주어야 한다.
이를 쿼리문으로 바꾸면 다음과 같다.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
LIKE 명령어를 사용해 OR연산자로 묶어주니
조건문이 너무 길어져 한눈에 조건을 확인하기 어렵단 생각이 들었다.
그래서 정확히 뭐라고 부르는지도 까먹은 ' | ' 이 친구를 기억에서 끄집어 올렸다.
검색해보니 정규표현식내의 OR연산을 해주는 친구로
REGEXP라는 명령어와 함께 쓰인다고 했다.
그래서 이 친구를 가지고
위의 구문을 줄여보려고 한다.
Neutered나 Spayed를 포함하고 있을 경우를 표현하면
'Neutered | Spayed'이 된다.
이때 LIKE 명령어를 썼을 때 처럼
%와 같은 부호가 들어가지 않아도 되는데
이는 ' | '이 조건으로 들어가는
Neutered와 Spayed에 해당하는 문자열을 찾아주기 때문이다.
따라서 위의 내용들을 쿼리문으로 바꾸면 다음과 같이 된다.

확실히 위의 LIKE 명령어와 OR연산자를 사용하여
조건문을 걸어주었을 때보다 깔끔해진 모습을 볼 수 있다.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
이제 마지막으로 아이디를 기준으로 정렬시켜주겠다.

정답인지 확인해보겠다.

'DB > 문제풀이' 카테고리의 다른 글
| [프로그래머스] 가격이 제일 비싼 식품의 정보 출력하기 -LV.2 (0) | 2023.01.10 |
|---|---|
| [프로그래머스] NULL처리하기 - LV.2 (0) | 2023.01.09 |
| [프로그래머스] 중복 제거하기 -LV.2 (0) | 2023.01.04 |
| [프로그래머스] 이름에 el이 들어가는 동물 찾기 -LV.2 (0) | 2023.01.03 |
| [프로그래머스] 루시와 엘라 찾기 (0) | 2023.01.02 |