я могу это сделать?если (2 - PullRequest
0 голосов
/ 18 января 2012

Я знаю, что могу сделать это

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

но я могу это сделать?

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

Я устал, это не работает. если я хочу получить второй результат, есть ли способ сделать?

Ответы [ 5 ]

2 голосов
/ 18 января 2012

Конечно, вы можете, но это не даст вам того результата, на который вы надеетесь. Совершенно верно, однако.

Пример:

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!
1 голос
/ 18 января 2012

Чтобы быть более стандартизированным, я бы написал это с помощью оператора CASE:

CASE WHEN a > 2 AND a < 8 THEN 1 ELSE 0 END AS Value
1 голос
/ 18 января 2012
SELECT IF (a BETWEEN 3 AND 7, 1, 0) AS Value
1 голос
/ 18 января 2012

Я так не думаю, но вы можете IF( 2<a AND a<8, 1, 0)

0 голосов
/ 18 января 2012

Технически вы могли бы просто использовать SELECT a BETWEEN 3 AND 7, так как это все равно вернет 1 или 0.

Используя 3 и 7, потому что вы хотите, чтобы> 2 и <8 не> = 2 и <= 8. </p>

Ваш пример оценивает 2 a.Затем он оценивает 0 <8 или 1 <8, что всегда будет равно 1. </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...