SAF> * Константин wrote, On 15.11.2006 5:13:

>>      подозреваю что неправильно разбирается строка:
>>        select 'OK' from rdb$database where 0 not in (null, 1)
>>        =>
>>        select 'OK' from rdb$database where not ((0 = null) or (0 = 1))
>>        
>>      а должно в
>>        select 'OK' from rdb$database where (0 <> null) or (0 <> 1)
>> 
>>      или
>>        select 'OK' from rdb$database where (not (0 = null) or not (0 = 1))
>> 
>> 
>>     вот! ЭТО БАГА !!! И притом понкретная ...

SAF> Ну вообще-то если предполагать, что утверждения
SAF> a NOT IN (b)
SAF> и
SAF> NOT (a IN (b))
SAF> эквивалентны, то разбор, который ты предполагаешь, как раз правильный ;)
SAF> А так, как ты хочешь в "должно", вообще получается и ни туда, и ни сюда
SAF> - попробуй в конструкцию, построенную по такому принципу, подставить
SAF> присутствующее в IN значение (только не null) - всё равно у тебя 
SAF> получится true.

    select 'OK' from rdb$database where 0 not in (1,2)
    select 'OK' from rdb$database where not ((0 = 1) or (0 = 2))      = true
    select 'OK' from rdb$database where (0 <> 1) or (0 <> 2)          = true
    select 'OK' from rdb$database where (not (0 = 1) or not (0 = 2))  = true

    И ? ... Я одного не пойму причём здесь null ? Null это ничего и
    "ничто" не должно влиять на остальные значения и/или операторы
    NOT/OR/AND/XOR .... Я предложил более правильный, ИМХО, разбор ...

С уважением,
Константин Григорьевич.
===============


Ответить