일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 회고
- 코딩봉사
- 자바
- 코틀린
- softeer
- kotlin
- SQL
- 프로그래머스
- 정보처리산업기사
- SW봉사
- CJ UNIT
- 코딩교육봉사
- python
- C++
- 소프티어
- BFS
- 파이썬
- 데이터베이스
- 알고리즘
- MYSQL
- 공부일지
- 문제풀이
- 백준
- 백준알고리즘
- 시나공
- programmers
- 1과목
- java
- 백준 알고리즘
- 스프링
- Today
- Total
JIE0025
[MSSQL] CASE 표현식 본문
사전지식
Statement (문) : Action 명령어 , ~을 하라
Expression (식, 표현식) : 값을 반환하는
Statement 명령문 | Expression 표현식 |
SELECT a, b,c FROM dbo.temp temp에서 a,b,c 컬럼값을 조회 하라 명령어 |
WHERE custid > 0 반드시 어떤 값이 반환이 되어야만 한다. custid 가 0보다 큰지에 대해 TRUE, FALSE, NULL 셋중 하나 무조건 반환 스칼라 값(단일 값)으로 반환 |
CASE 표현식
CASE는 조건논리를 기반으로 값을 출력하는 스칼라 표현식
CASE는 표현식(Expression)이지 구문(Statement) 가 아니다.
CASE 표현식의 종류
- 단순형 (CASE다음에 column있음, WHEN 다음에 값)
- 검색형 (CASE다음에 column없음, WHEN 다음에 조건식)
CASE 사용방법
1) 단순형 CASE
SELECT productid, productname CASE 컬럼 WHEN 조건값1 THEN 반환값1 WHEN 조건값2 THEN 반환값2 ELSE 그외반환값 FROM Production.Product; |
- 컬럼의 값이 조건값1일경우 결과별칭에 반환값1이 반환된다.
- 컬럼값이 조건값에 없는경우 즉, 나머지를 ELSE로 보내서 그외반환값을 반환한다.
- 반드시 CASE는 END로 끝내주어야한다.
<예제>
SELECT productid, productname, categoryid, CASE categoryid WHEN 1 THEN 'Beverages' WHEN 2 THEN 'Condiments' WHEN 3 THEN 'Confections' WHEN 4 THEN 'Dairy Products' WHEN 5 THEN 'Grains/Cereals' WHEN 6 THEN 'Meat/Poultry' WHEN 7 THEN 'Produce' WHEN 8 THEN 'Seafood' ELSE 'Unknown Category' END AS categoryname FROM Production.Products; |
참고
SELECT 에 있는 column인 productid, productname, categoryid 와
CASE문은 같은 레벨 (동급) 이다.
그래서 결과 표에 나란히 나온 것 이다.
2) 검색형 CASE
단순형은 단일값에 대한 값이 출력되었다면,
검색형은 값의 범위에 따라 반환값을 정의한다.
SELECT orderid, custid, val,
|
<예제>
SELECT orderid, custid, val, CASE WHEN val < 1000.00 THEN 'Less than 1000' WHEN val BETWEEN 1000.00 AND 3000.00 THEN 'Between 1000 and 3000' WHEN val > 3000.00 THEN 'More than 3000' ELSE 'Unknown' END AS valuecategory FROM Sales.OrderValues; |
'Application > Database' 카테고리의 다른 글
[MSSQL] LIKE 술어 (0) | 2021.04.14 |
---|---|
[MSSQL] NULL 값 (0) | 2021.04.14 |
[MSSQL] 술어와 연산자, 연산자 우선순위 (0) | 2021.04.14 |
[MySQL] 순위 함수 (분석 함수) (0) | 2021.04.13 |
[MySQL] 오류 발생해도 계속 삽입하도록 설정하기, 중복시 덮어쓰기 (0) | 2021.04.13 |