작성
·
426
1
SELECT
CASE
WHEN (A + B <= C) OR (B + C <= A) OR (C + A <= B) THEN 'Not A Triangle'
WHEN (A = B AND B <> C) OR (B = C AND C <> A) OR (C = A AND A <> B)THEN 'Isosceles'
WHEN A = B AND B = C THEN 'Equilateral'
--WHEN (A <> B) AND (B <> C) AND (C <> A) THEN 'Scalene'
ELSE 'Scalene'
END
FROM triangles;
질문1)
빨간색 부분이 제가 원래 작성했었던 WHEN THEN 구문인데요, else로 처리 하는 게 간명하다고 생각되어, 주석처리 한 후 ELSE 문으로 작성하였는데, 계속 오류가 뜨더라구요.
주석 처리된 부분을 지우면 정답처리 되었습니다.
주석처리한 줄은 결과에 영향을 안미쳐야하는데, 어떻게 된 것일까요...?
질문2)
밑줄친 부분처럼 조건을 작성할 경우, 정삼각형 조건과 순서에 상관 없이 적용이 잘 되는데요, 이렇게 작성해도 되겠죠?혹시 조건이 길어져서 더 안좋다던가 하는 게 있나요?
답변 1
2
안녕하세요 이상현님
1) 아래와 같이 주석처리(--) 후 코드 시작 전 띄어쓰기를 해주시면 에러가 나지 않고 주석처리가 됩니다. 에디터 오류인 것 같습니다.
-- WHEN (A <> B) AND (B <> C) AND (C <> A) THEN 'Scalene'
2) 말씀해주신 정도의 연산 조건의 갯수나 순서 때문에 연산 속도에 큰 영향이 있을 것 같지는 않아 보입니다. 쿼리 속도와 관련해서는 실제 DB에 셋팅된 조건과 인프라 상황에 따라 달라질 수 있으므로 정확하게 답변드리기 어려운 점 양해 부탁드립니다.
띄어쓰기를 해야했군요.. 답변 감사합니다^^