Oracle 의 Case 문구
현재 Oracle 은 두 가지 CASE 표현 방식 을 지원 하 는데 하 나 는 Oracle 을 Simple CASE (간단 한 형식) 라 고 부 르 고 다른 하 나 는 searched CASE (조회 형식) 라 고 부른다.Simple CASE 는 함수 Decode 를 사용 하 는 것 과 같 지만 Case 는 일반적으로 더욱 복잡 한 문 구 를 조작 하 는 데 사용 된다.CASE 의 형식 은 읽 기 가 더욱 쉽다.
simple CASE 의 표현 형식 은 다음 과 같다.
CASE expr WHEN comparison_expr THEN return_expr[, WHEN comparison_expr THEN return_expr]... [ELSE else_expr] END
* 주: [] 내용 은 생략 가능
실행 방법:
Oracle 은 표현 식 expr 와 표현 식 comparison 여 부 를 검사 합 니 다.expr 가 같 으 면 return 을 실행 합 니 다.expr, 그렇지 않 으 면 ELSE elseexpr 의 내용.
searched CASE 표시 형식 은 다음 과 같 습 니 다.
CASE WHEN condition THEN return_expr [, WHEN condition THEN return_expr] ... ELSE else_expr] END
어떤 방식 으로 든 사용 할 수 있다.
이 두 가지 표현 방식 은 모두 최대 255 개의 매개 변 수 를 지원 하 는데 그 중에서 When... Then 한 쌍 은 2 개의 매개 변수 로 계산 된다.
예 를 들 면:
1、
SELECT AVG(CASE when e.salary > 2000 THEN e.salary ELSE 2000 end) AS avg_sal_2k_floorFROM employees e;2、
SELECT AVG(CASE WHEN e.sal BETWEEN 0 AND 2000 THEN e.sal ELSE null END) avg2000, AVG(CASE WHEN e.sal BETWEEN 2001 AND 5000 THEN e.sal ELSE null END) avg5000FROM emps e;
3、
SELECT SUM(CASE WHEN cust_credit_limit BETWEEN 0 AND 3999 THEN 1 ELSE 0 END)
AS "0-3999",
SUM(CASE WHEN cust_credit_limit BETWEEN 4000 AND 7999 THEN 1 ELSE 0 END)
AS "4000-7999",
SUM(CASE WHEN cust_credit_limit BETWEEN 8000 AND 11999 THEN 1 ELSE 0 END)
AS "8000-11999",
SUM(CASE WHEN cust_credit_limit BETWEEN 12000 AND 16000 THEN 1 ELSE 0 END)
AS "12000-16000"
FROM customers WHERE cust_city = 'Marshal';
0-3999 4000-7999 8000-11999 12000-16000
---------- ---------- ---------- -----------
8 7 7 1
4、
SELECT (CASE WHEN cust_credit_limit BETWEEN 0 AND 3999 THEN ' 0 - 3999'
WHEN cust_credit_limit BETWEEN 4000 AND 7999 THEN ' 4000 - 7999'
WHEN cust_credit_limit BETWEEN 8000 AND 11999 THEN ' 8000 - 11999'
WHEN cust_credit_limit BETWEEN 12000 AND 16000 THEN '12000 - 16000' END)
AS BUCKET, COUNT(*) AS Count_in_Group
FROM customers WHERE cust_city = 'Marshal' GROUP BY
(CASE WHEN cust_credit_limit BETWEEN 0 AND 3999 THEN ' 0 - 3999'
WHEN cust_credit_limit BETWEEN 4000 AND 7999 THEN ' 4000 - 7999'
WHEN cust_credit_limit BETWEEN 8000 AND 11999 THEN ' 8000 - 11999'
WHEN cust_credit_limit BETWEEN 12000 AND 16000 THEN '12000 - 16000' END);
BUCKET COUNT_IN_GROUP
------------- --------------
0 - 3999 8
4000 - 7999 7
8000 - 11999 7
12000 - 16000 1
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
activemq 5.5 의 입문 은 설치, 시작, 데이터베이스 지속 화 를 포함한다Apache ActiveMQ 5.5.0 은 주로 유지보수 버 전 으로 130 개가 넘 는 문 제 를 복 구 했 으 며 대부분 bug 와 개선 이 었 다. Improved performance for offline d...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.