2016-12-08 4 views
1

SQL Server의 초보자이며 SQL Server에서 XOR 연산을 수행하려고 시도하지만이를 수행 할 수 없습니다.SQL Server의 XOR

면적이 큽니다. 인구가 많지만 인구는 많고 표시 이름, 인구 및 지역이 큰 국가는 표시해야합니다. 기본적으로 잘못된 것이 아니라면 XOR 연산입니다.

면적이 300 만 평방 킬로미터 이상이거나 인구가 2 억 5 천만 이상인 국가는 큰 나라입니다.

나는이

SELECT name, population, area 
FROM world 
WHERE (area > 30000000 | population > 25000000) & 
     (area < 30000000 & population < 25000000) 

이 친절하게 제안 노력했다.

참고 : 나는 http://sqlzoo.net/wiki/SELECT_from_WORLD_Tutorial, Q.No-8에 SQLSERVER로 SQL 엔진을 선택하십시오.

+0

http://stackoverflow.com/a/14731578/4832634 [T-SQL XOR 연산자 (의 –

+0

가능한 중복 http://stackoverflow.com/questions/5411619/t-sql-xor-operator) –

+0

@ shA.t 아니 겠지. – Ashish

답변

2

당신은이 같은 XOR을 구현할 수 있습니다

SELECT name 
    , population 
    , area 
FROM world 
WHERE (area > 3000000 AND population < 250000000) 
    OR (area < 3000000 AND population > 250000000) 
+0

이 쿼리는 문제가 있습니다. 정확하게 3 백만 km^2의 인구 또는 인구 250 만명의 인구를 무시합니다. –

+0

@TimBiegeleisen, 나는'OP's' 예제의 논리를 편집하여'XOR' 논리를 얻었을뿐입니다. 그래서 원래의 게시물 ('area> 30000000 | population> 25000000')과 같이 영역과 인구 비교를 남겼습니다. –

+0

@ Radu Gheorghiu, 제안 주셔서 감사하지만 필요한 테이블을 생산하지 않습니다. – Ashish

3
SELECT name, 
     population, 
     area 
FROM world 
WHERE (area > 3000000 AND population <= 25000000) OR -- big area, small population 
     (area <= 3000000 AND population > 25000000)  -- small area, big population 

"작다"조건을 나타 내기 위해 <=을 사용했습니다. 이는 지역이 3 백만 km^2 또는 인구가 정확히 250 만 명과 같은 상황을 피하기위한 것입니다. <을 사용하면이 경우 데이터가 제거됩니다.

+0

"** 편집에 동의합니다. 질문에"** ** 3 백만 평방 킬로미터 이상 ** 또는 ** ** 2 억 5 천만 이상 **의 인구가 있습니다. " 비 포괄적 비교. –

+0

또한 OP의 게시물에 포함되지 않은 비교 연산자가 있습니다. ('area> 30000000 | population> 25000000') –