내 답안(오답)
SELECT
ANIMAL_ID,
NAME,
CASE WHEN SEX_UPON_INTAKE LIKE '%Neutered%' OR '%Spayed%' THEN 'O'
ELSE 'X'
END AS '중성화'
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;
왜 오답인지 알 수 없었음(코드가 제대로 구동되는 것 같아서)
정답과 비교해보고 나서야 알 수 있었다.
SELECT ANIMAL_ID
,NAME
,CASE
WHEN SEX_UPON_INTAKE LIKE '%Neutered%' OR SEX_UPON_INTAKE LIKE '%Spayed%' THEN 'O'
ELSE 'X'
END AS '중성화'
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;
| 잘못된 구문 | 이유 |
|---|---|
A OR B에서 B가 조건문이 아닌 일반 값일 때 | SQL은 B를 TRUE로 해석해버림 |
'문자열' 자체는 TRUE처럼 동작 | 비어 있지 않기 때문 |
올바른 비교: A LIKE '%a%' OR A LIKE '%b%' | 각각 완성된 조건이 필요함 |
조건문은 항상 완성된 비교식으로 각각 써야함을 잊지 말자.
]
replace method가 none으로 되어 있으면 중복된 값에서 오류가 뜸
ALTER TABLE divvy
MODIFY COLUMN started_at DATETIME;
이미 만들어진 테이블을 수정하는 문법