반응형
여러 값을 가진 CASE IN 문
IN 조항으로 CASE 문을 만드는 방법이 있습니까?
SELECT
CASE c.Number
IN ('1121231','31242323') THEN 1
IN ('234523','2342423') THEN 2
END AS Test
FROM tblClient c
예. 표현식의 "단순" 형식이 아닌 "검색" 형식을 사용해야 합니다.
SELECT CASE
WHEN c.Number IN ( '1121231', '31242323' ) THEN 1
WHEN c.Number IN ( '234523', '2342423' ) THEN 2
END AS Test
FROM tblClient c
여러 일치 항목에서 동일한 값을 반환할 수 있습니다.
SELECT
CASE c.Number
WHEN '1121231' THEN 1
WHEN '31242323' THEN 1
WHEN '234523' THEN 2
WHEN '2342423' THEN 2
END AS Test
FROM tblClient c
이것은 아마도 마틴스의 제안과 같은 실행 계획을 초래할 것이기 때문에, 그것을 어떻게 쓰느냐가 더 중요합니다.
SQL Server에 대한 질문이지만, 마틴 스미스의 답변을 연장하고 싶습니다.
SQL:2003 표준에서는 간단한 대소문자 표현을 위한 여러 값을 정의할 수 있습니다.
SELECT CASE c.Number
WHEN '1121231','31242323' THEN 1
WHEN '234523','2342423' THEN 2
END AS Test
FROM tblClient c;
옵션 기능입니다.단순 CASE 식의 쉼표로 구분된 술어"(F263).
구문:
CASE <common operand>
WHEN <expression>[, <expression> ...] THEN <result>
[WHEN <expression>[, <expression> ...] THEN <result>
...]
[ELSE <result>]
END
제가 알기로는 실제로 그 구문을 지원하는 RDBMS를 전혀 모릅니다.
더 많은 숫자가 있거나 새로운 테스트 번호를 추가하려는 경우CASE그러면 보다 유연한 접근 방식을 사용할 수 있습니다.
DECLARE @Numbers TABLE
(
Number VARCHAR(50) PRIMARY KEY
,Class TINYINT NOT NULL
);
INSERT @Numbers
VALUES ('1121231',1);
INSERT @Numbers
VALUES ('31242323',1);
INSERT @Numbers
VALUES ('234523',2);
INSERT @Numbers
VALUES ('2342423',2);
SELECT c.*, n.Class
FROM tblClient c
LEFT OUTER JOIN @Numbers n ON c.Number = n.Number;
또한 테이블 변수 대신 일반 테이블을 사용할 수 있습니다.
언급URL : https://stackoverflow.com/questions/7449509/case-in-statement-with-multiple-values
반응형
'programing' 카테고리의 다른 글
| Form control valueChanges는 이전 값을 제공합니다. (0) | 2023.08.13 |
|---|---|
| Android API 21 도구 모음 패딩 (0) | 2023.08.13 |
| NPM에서 devDependencies를 업데이트하려면 어떻게 해야 합니까? (0) | 2023.08.08 |
| Angular2, 앵커 요소를 비활성화하는 올바른 방법은 무엇입니까? (0) | 2023.08.08 |
| GUID가 있습니까?의 구문 분석()을 시도합니다.NET 3.5? (0) | 2023.08.08 |