GaussDB SQL의 CASE 표현식 이해

이 기사 는 Gauss Squirrel Club Assistant 2가 Huawei 클라우드 커뮤니티 " GaussDB SQL 기본 구문 예제-CASE 표현 "에서 공유한 것입니다.

I. 소개

SQL은 데이터베이스에 액세스하고 조작하는 데 사용되는 표준 컴퓨터 언어입니다. GaussDB는 SQL 표준을 지원합니다(SQL2, SQL3, SQL4의 주요 기능이 기본적으로 지원됩니다).

본 시리즈는 온라인 문서 "Cloud Database GaussDB—SQL Reference"를 기반으로 소개됩니다.

2. CASE 표현 소개

GaussDB SQL에서 CASE 표현식(CASE Expression)은 SQL에서 조건 기반 작업을 수행하는 데 사용할 수 있는 매우 강력하고 일반적으로 사용되는 도구입니다. CASE 표현식은 IF-THEN-ELSE 문과 유사하지만 사용이 더 유연하고 읽고 쓰기가 더 쉽습니다.

CASE 표현식에는 두 가지 형식이 포함됩니다. 하나는 단순 형식이고 다른 하나는 검색 형식입니다. 이 두 가지 형식의 작문, 문법 및 사용법은 아래에 소개됩니다.

3. GaussDB 데이터베이스의 간단한 CASE 표현

1. 기본 개념

간단한 CASE 표현식은 주어진 표현식에 대해 동등 기반 비교를 수행하고 표현식이 특정 값과 같을 경우 연산을 수행합니다. 즉, input_expression과 when_expression의 일치 결과를 기반으로 해당 result_expression으로 점프합니다.

2. 기본 문법

CASE 입력_표현식

WHEN when_expression THEN result_expression

[...N]

[ELSE else_result_expression]

끝;

설명하다 :

그 중 input_expression은 비교해야 할 표현식을 나타내고, when_expression 등은 비교해야 할 값을 나타내고, result_expression 등은 각 값이 같을 때의 결과를 나타내고, else_result_expression은 input_expression이 같지 않을 때의 기본 결과를 나타냅니다. 어떤 값.

:

CASE: 간단한 CASE 함수는 하위 쿼리를 지원하지만 input_expression과 when_expression이 일치할 수 있다는 점에 유의하세요. 또한 TRUE로 평가되는 input_expression = when_expression이 없는 경우 ELSE 절이 지정되면 DLI는 ELSE 절이 지정되지 않으면 else_result_expression을 반환하고 NULL 값이 반환됩니다.

3. 예시

사원급을 고정급여 기준으로 정의한다고 가정하면 다음과 같은 SQL에 따라 실행될 수 있다.

이름 선택

,샐러리

,CASE 급여

     15000이면 '주니어'

         20000이면 '중급'

            25000이면 '프리미엄'

            30000이면 '프리미엄'

            35000이면 '프리미엄'

            그렇지 않으면 NULL

        END AS 레벨

회사에서

급여순으로 주문하세요.

SQL 문 구문 분석 :

테스트에서는 GaussDB 데이터베이스에 생성된 회사 테이블을 사용합니다.

이 SQL은 "회사" 테이블에서 직원의 이름(name), 급여(salary), 급여 수준(level)에 따라 분류된 필드를 선택합니다. 그리고 "ORDER BY 급여" 문을 사용하여 낮은 급여에서 높은 급여 순으로 결과를 정렬합니다.

간단한 CASE 표현식의 작동 방식:

"salary" 필드의 값이 15000이면 "level" 필드의 값은 "junior"입니다.

"salary" 필드의 값이 20000이면 "level" 필드의 값은 "intermediate"입니다.

"급여" 필드의 값이 25000, 30000 또는 35000인 경우 "수준" 필드의 값은 "고급"입니다.

"salary" 필드의 값이 위의 값 중 어느 것과도 같지 않으면 "level" 필드의 값은 NULL입니다.

4. GaussDB 데이터베이스에서 CASE 표현식 검색

1. 기본 개념

CASE 표현식을 검색한다는 것은 주어진 표현식에 대해 부등식 비교를 수행하고, 해당 표현식이 주어진 조건을 만족하면 해당 연산을 수행하는 것을 의미합니다. 즉, 각 WHEN 절의 boolean_expression은 지정된 순서로 평가됩니다. TRUE로 평가되는 첫 번째 boolean_expression의 result_expression을 반환합니다.

2. 기본 문법

CASE WHEN boolean_expression THEN result_expression

[...N]

[ELSE else_result_expression]

끝;

설명하다:

그 중 boolean_expression 등은 비교해야 할 조건을 나타내고, result_expression 등은 해당 조건이 만족되었을 때의 연산 결과를 나타내며, else_result_expression은 표현식이 어떤 조건도 만족하지 않을 때의 기본 결과를 나타냅니다.

:

boolean_expression: 하위 쿼리를 포함할 수 있지만 전체 boolean_expression 표현식의 반환 값은 부울 유형만 될 수 있습니다.

TRUE로 평가되는 Boolean_expression이 없으면 ELSE 절이 지정되면 DLI는 else_result_expression을 반환하고, ELSE 절이 지정되지 않으면 NULL 값이 반환됩니다.

3. 예시

급여 범위를 기준으로 직원 등급을 정의한다고 가정하면 다음 SQL에 따라 실행될 수 있다.

이름 선택

,샐러리

,급여 < 15000 THEN '初级'인 경우

         급여가 15000에서 25000 사이이면 '中级'

            급여 > 25000이면 '선배'

            그렇지 않으면 NULL

        END AS 레벨

회사에서

급여순으로 주문하세요.

SQL 문 구문 분석 :

위 SQL과 동일하게 "회사" 테이블에서 사원의 이름(name), 급여(salary)를 선택하고 급여 수준(level)에 따라 분류하는 SQL입니다.

검색 CASE 표현식의 작동 방식:

급여(급여)가 15,000 미만인 경우 급여등급은 '후배'로 표시됩니다.

급여가 15,000~25,000(포함) 사이인 경우 급여 등급은 "중급"으로 표시됩니다.

급여가 25,000을 초과하는 경우 급여 등급은 "상위"로 표시됩니다.

위 조건 중 어느 것도 충족되지 않는 경우 급여 등급은 NULL로 표시됩니다.

정리하면, 이 SQL 문의 주요 목적은 사원의 정보를 얻어 급여 수준에 따라 분류하고 급여 수준에 따라 정렬하는 것입니다.

5. 요약

GaussDB의 CASE 표현식은 SQL에서 조건 기반 작업을 수행하고 조건 판단 및 분기 논리를 구현하며 데이터베이스 쿼리 및 작업을 더욱 최적화하는 데 사용할 수 있는 매우 유용한 도구입니다. SQL 코드를 작성할 때 간단한 형식이나 검색 형식을 유연하게 선택하여 특정 비즈니스 요구에 따라 작성할 수 있으므로 코딩 효율성과 코드 가독성이 크게 향상될 수 있습니다.

첨부 : 보조 정의 태그, 포화 통계, 계산 지표, 데이터 형식 변환 등과 같은 일반적인 사용 시나리오 .

화웨이 클라우드의 신기술에 대해 빨리 알아보고 팔로우하려면 클릭하세요~

 

RustDesk는 만연한 사기로 국내 서비스 Taobao(taobao.com)를 중단하고 웹 버전 최적화 작업을 재개했으며 Apple은 M4 칩을 출시했으며 고등학생들은 성인식으로 자신의 오픈 소스 프로그래밍 언어를 만들었습니다. 네티즌들은 다음과 같이 논평했습니다. 변호인인 Yunfeng은 Alibaba에서 사임했으며 향후 Windows 플랫폼의 Visual Studio Code 1.89를 독립 게임 프로그래머를 위한 대상인 Huawei에 의해 공식적으로 발표되었습니다. Yu Chengdong의 직업 조정은 "FFmpeg Pillar of Shame"에 포함되었습니다. ” 15년 전, 오늘 그는 우리에게 감사해야 합니다. Tencent QQ Video가 이전의 수치심을 복수한다고요? 화중과기대학교 오픈소스 미러 스테이션이 외부 네트워크 접속에 공식적으로 개방되었습니다.
{{o.이름}}
{{이름}}

추천

출처my.oschina.net/u/4526289/blog/11106074