IS NULL не работает

У меня есть таблица, подобная приведенной выше, с двумя левыми столбцами (они оба целочисленные), и я добавил в эту таблицу еще два поля:

Таблица 1:

Asset_Value    Contract_Value  
-------------------------------
0              NULL             
NULL           200               
0              NULL     

И запрос:

Select 
    Asset_Value, Contract_Value,
    Case 
       when Asset_Value is null 
          then 1 
          else 0 
    end As Ind_ForNullA,
    Case 
       when Contract_Value is null
          then 1 
          else 0 
    end As IndForNullC
from 
    table1

Тем не менее, я получаю странные результаты:

Asset_Value Contract_Value  Ind_ForNullA IndForNullC
----------------------------------------------------
0              NULL              1            1
NULL           200               0            0
0              NULL              0            1

Обновление: никогда не возражай. Дамм запятая была забыта.

3 ответа

Попробуйте использовать ' ' пустую строку вместо нуля.

Почему вы пытаетесь определить что-то как NULL- что уместно - но, в этом или том или ином случае, изменить его на единицу или ноль (попытка логического выражения, я думаю)- что неуместно?

Что вы будете делать дальше: решите, что в третьем отчете вы хотите иметь РЕАЛЬНОЕ логическое значение, которое отображает ИСТИНА или ЛОЖЬ?

Используйте NULL последовательно, во всем приложении, везде или нет. Тем не менее, НЕ СМЕШАЙТЕ И СРАВНИТЕ ПАРАДИГМЫ и ожидайте последовательных результатов Кроме того, постарайтесь не полагаться на CASE: есть очень, очень законная причина полагаться на это - особенно на что-то более простое, чем то, что вы делаете.

К вашему сведению, единственная причина, по которой я могу понять, почему вы хотели бы, чтобы это поле "индикатор", состояло в том, чтобы вы могли проверить, является ли INDICATOR_A = 1. Однако, поскольку вы можете проверить ASSET IS NULL, зачем вообще беспокоиться? НИКОГДА не вводите посторонние механизмы, когда нет непреодолимой причины для этого.

Попробуйте использовать функцию ASCII

ASCII (символьное выражение)

Используя эту функцию, вы можете понять, что на самом деле является символом в столбце Asset_Value: например, значение NULL должно иметь код ASCII: '00' Таблица с символьным кодом ASCII

Другие вопросы по тегам