2.1 CASE 문
SQL에서 명령문을 작성하는 방법에는 두 가지가 있습니다 CASE
. 첫 번째 항목은 Java 언어의 스위치처럼 보이고 두 번째 형식은 복수형에 가깝습니다 if-else
.
스위치의 아날로그 인 첫 번째 옵션부터 시작하겠습니다. 일반적인 형식은 다음과 같습니다.
CASE case_value
WHEN value1 THEN result1
[WHEN value2 THEN result2] ...
[ELSE resultN]
END
와 매우 유사하지만 switch
단어만 약간 다릅니다.
SQL | 자바 |
---|---|
케이스 x | 스위치(x) { |
때 값 | 케이스 값: |
그런 다음 결과 | 반환 결과; |
그렇지 않으면 결과 | 기본값: 결과 반환; |
끝 | } |
Java에서 SQL로 예제를 번역해 보겠습니다.
자바 | SQL |
---|---|
|
|
2.2 CASE 문의 두 번째 버전
두 번째 버전의 연산자도 있는데 CASE
위에서 언급한 것처럼 복수형에 더 가깝습니다 if-else
. 일반적인 형식은 다음과 같습니다.
CASE
WHEN condition 1 THEN result1
[WHEN condition 2 THEN result2] ...
[ELSE resultN]
END
여기에서 조건은 단순히 순차적으로 확인되며, 그 중 하나라도 참이면 지정된 결과가 반환됩니다. 어떤 조건도 참이 아니면 에 지정된 값입니다 ELSE
.
Java에서 SQL로 예제를 번역해 보겠습니다.
자바 | SQL |
---|---|
|
|
|
|
|
|
2.3 CASE 문을 사용하여 문제 해결
몇 가지 흥미로운 쿼리를 적어 보겠습니다. "EXPIRED!" 라는 단어를 추가하는 작업이 있었습니다. 작업 표의 과거 작업 이름으로 . 로 쉽게 할 수 있습니다 CASE
.
마감일 필드 의 경우 두 번째 버전의 진술처럼 보입니다 CASE
.
CASE
WHEN deadline < CURDATE() THEN CONCAT('EXPIRED!', name)
ELSE name
END
연산자를 사용하는 전체 쿼리의 예 CASE
:
SELECT
id,
emploee_id,
CASE WHEN deadline < CURDATE() THEN CONCAT('EXPIRED!', name) ELSE name END AS name,
deadline
FROM task
이 쿼리의 결과는 다음과 같습니다.
ID | employee_id | 이름 | 마감 시간 |
---|---|---|---|
1 | 1 | 만료! 프런트엔드의 버그 수정 | 2022-06-01 |
2 | 2 | 백엔드의 버그 수정 | 2022-06-15 |
삼 | 5 | 커피를 사다 | 2022-07-01 |
4 | 5 | 커피를 사다 | 2022-08-01 |
5 | 5 | 커피를 사다 | 2022-09-01 |
6 | (없는) | 사무실을 청소하다 | (없는) |
7 | 4 | 즐거운 삶 | (없는) |
8 | 6 | 즐거운 삶 | (없는) |
GO TO FULL VERSION