2012-01-18 43 views
0

我知道我能做到這一點我可以這樣做嗎?如果(2 <a <8,1,0)作爲MySQL中的值?

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

,但我能做到這一點?

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

我累了,它不起作用。如果我想獲得第二個結果,那麼有辦法嗎?

+0

你試過了嗎? – Prescott 2012-01-18 15:54:12

+0

是的,它不適合我...我的意思是如果我想得到第二個結果是有辦法做的嗎? – peipei 2012-01-18 15:56:31

+0

它會工作...但值總是爲1 – 2012-01-18 16:05:16

回答

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。

使用圖3和7,因爲你想> 2和< 8中未> = 2和< = 8

你的例子將評估2 <一個0或1取決於a值返回。然後它評估0 < 8或1 < 8,它總是評估爲1.

+0

假設列中的值是整數。 – Mchl 2012-01-18 16:04:19

+0

那麼這將是一個合理的假設,沒有表架構可用。 – anothershrubery 2012-01-18 16:06:11

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` 

那麼這也是TRUE(1)。因爲發生這種情況:

Is 100 < 200? Sure! So let's return "1". 
Is 1 < 100? Yep! 
相關問題