Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Теоретические аспекты и практические реализации создания, внедрения и использования баз данных, СУБД, хранилищ.
  • Страница:
  • 1
  • 2

ТЕМА:

1 <> NULL в Oracle 12 года 10 мес. назад #1541

Такой запрос:
SELECT A.Field1,B.Field2 FROM TABLE1  A INNER JOIN TABLE2 B
    ON A.Id=B.Id
    WHERE    A.Field1<>B.Field2

ничего не возвращает. Такой:
SELECT A.Field1,B.Field2 FROM TABLE1  A INNER JOIN TABLE2 B
    ON A.Id=B.Id

возвращает несколько строчек, причем A.Field1=1, а B.Field2 is NULL

Это меня под конец дня проблемы с головой или что-то иное?

P.S. Field1,Field2 - NUMBER(10)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: 1 <> NULL в Oracle 12 года 10 мес. назад #1542

Потому что условие 1 <> null не является true, а является неопроделенностью, то есть тоже null
where 1 <> null,
where 1 = null
такие строчки пропускаются

И вообще что ты собираешься делать в случаях?
A.Field1 = 0 и B.Field2 = null?

условие можно сделать примерно такое
SELECT A.Field1,B.Field2
FROM TABLE1 A, TABLE2 B
WHERE A.ID = B.ID and nvl(A.Field1,0) <> nvl(B.Field2,0)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Chlo.

Re: 1 <> NULL в Oracle 12 года 10 мес. назад #1543

NULL - значение неопределённое по умолчанию, поэтому даже если поле NULL то выражение Field=NULL всегда вернёт False, даже NULL=NULL всегда должно возвращать False. Для работы с NULL используют выражения

Field is NULL
или
Field is not NULL

А для связанных таблиц используется Outer Join чтоб NULL поля тоже участвовали

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: 1 <> NULL в Oracle 12 года 10 мес. назад #1544

В оракле "join" не используют
вместо outer join - (+)

SELECT A.Field1,B.Field2
FROM TABLE1 A, TABLE2 B
WHERE A.ID = B.ID and A.Field1 <> B.Field2(+)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Chlo.

Re: 1 <> NULL в Oracle 12 года 10 мес. назад #1545

В оракле "join" не используют
вместо outer join - (+)


Ну ты ошибаешься. Лично знаю многих, кто предпочитает использовать join'ы, чтобы, быть ближе к стандарту. А (+) - это целая история , его ведь нету в ANSI стандарте

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: 1 <> NULL в Oracle 12 года 10 мес. назад #1546

да возможно. Если сила привычки, или есть мотивация быть ближе к стандарту - тогда да.
Но делать так как предлагает оракл удобнее, быстрее и поэтому эффективнее.
Я просто не представляю свою жизнь без (+) :)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
  • 2
Время создания страницы: 0.210 секунд