Обработка нулевых значений в плоских файлах информатики

Привет, ребята, мой код выглядит так

iif(not isnull(ltrim(rtrim(a))) or not is_spaces(ltrim(rtrim(a))) or ltrim(rtrim(a))!='' or length(ltrim(rtrim(a)))!=0 or ltrim(rtrim(a))!=null or ltrim(rtrim(a))!='NULL'and not isnull(ltrim(rtrim(b))) or not is_spaces(ltrim(rtrim(b))) or ltrim(rtrim(b))!='' or length(ltrim(rtrim(b)))!=0 or ltrim(rtrim(b))!=null or ltrim(rtrim(b))!='NULL',null,ltrim(rtrim(a))).

Если и a, и b равны not null, тогда я должен сделать a как null, иначе передать значение a как есть. Но моя логика не работает нормально, и я проверил журналы сеансов, предоставив подробные данные для преобразования выражений, но мое значение b, которое равно [NULL], поступающему в журналы сеансов, считается not null . Не могли бы вы помочь мне, ребята, дать точные утверждения для правильной идентификации нулевых значений. Я пробовал с is_spaces, пустыми параметрами strings.length!=0. Но все же нулевые значения считаются фактическими значениями, что неверно.


person Scott    schedule 29.01.2016    source источник
comment
Это файл фиксированной ширины?   -  person Ruchi    schedule 30.01.2016


Ответы (1)


Я думаю, вам нужно сгруппировать условия для a и b, как показано ниже.

IIF
(
     (
        NOT ISNULL(LTRIM(RTRIM(a)))
     OR NOT IS_SPACES(LTRIM(RTRIM(a)))
     OR LTRIM(RTRIM(a)) != ''
     OR LENGTH(LTRIM(RTRIM(a))) != 0
     OR LTRIM(RTRIM(a)) != NULL
     OR LTRIM(RTRIM(a)) != 'NULL'
     )
    AND
     (
        NOT ISNULL(LTRIM(RTRIM(b)))
     OR NOT IS_SPACES(LTRIM(RTRIM(b)))
     OR LTRIM(RTRIM(b)) != ''
     OR LENGTH(LTRIM(RTRIM(b))) != 0
     OR LTRIM(RTRIM(b)) != null
     OR LTRIM(RTRIM(b)) != 'NULL'
     )
  ,NULL
  ,LTRIM(RTRIM(a))
)

Надеюсь это поможет.

ПРИМЕЧАНИЕ. Я не оптимизировал ваши проверки для проверки null условий.

person vmachan    schedule 29.01.2016
comment
Рад, что это сработало! Не могли бы вы отметить это как ответ, чтобы указать то же самое? - person vmachan; 01.02.2016