2012-01-18 3 views
0

나는 내가이나는 이것을 할 수 있습니까? mysql에서 (2 <a <8, 1, 0) 값으로?

if(a<8 , 1, 0) as Value

할 수있는 알고 있지만 나는이 작업을 수행 할 수 있습니까?

if(2<a<8 , 1, 0) as Value in mysql?

피곤, 작동하지 않습니다. 두 번째 결과를 얻고 싶다면 할 일이 있습니까?

+0

시도해 보셨습니까? – Prescott

+0

네, 제게는 효과가 없습니다 ... 제 2의 결과를 얻고 싶다면 할 수있는 방법이 있습니까? – peipei

+0

작동하지만 ... 항상 값은 1이됩니다. –

답변

1

더 표준화하기 위해, 나는 CASE 문이 쓰기 줄 수 있습니다

CASE WHEN a > 2 AND a < 8 THEN 1 ELSE 0 END AS Value 
1

나는 그렇게 생각하지 않습니다,하지만 당신은 IF(2<a AND a<8, 1, 0)

0

기술적으로 그냥 SELECT a BETWEEN 3 AND 7을 사용할 수 있습니다 어쨌든 1 또는 0을 반환합니다. 당신은> 2 < 8하지> = 2 < = 8

귀하의 예를 원하기 때문에 2 <을 평가합니다 3, 7을 사용

0 또는 1 a의 값에 따라 반환되는가. 그런 다음 0 < 8 또는 1 < 8을 계산합니다. 항상 1로 평가됩니다.

+0

열의 값이 정수라고 가정합니다. – Mchl

+0

테이블 스키마를 사용할 수 없으면 합리적인 가정이됩니다. – anothershrubery

2

물론 가능하지만 원하는 결과를 제공하지는 않습니다. 그러나 완벽하게 유효합니다.

예 :

SELECT IF(1 < 2 < 3, 1, 0) AS `value` 

이 반환 '1'. 그것은 작동해야합니다, 그렇지? 그렇지 않아. 다음과 같은 현상이 발생합니다.

Is 1 < 2 ? Sure! Let's return "1" (an INT because MySQL doesn't have a boolean TRUE) 
Is 1 < 3 ? Sure! 

그렇다면 어떻게 될까요?

SELECT IF(100 < 200 < 100) AS `value` 

음 .. 그건 참입니다 (1). 이 문제가 발생하기 때문에 :

Is 100 < 200? Sure! So let's return "1". 
Is 1 < 100? Yep! 
관련 문제