powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE 12.5 и ASA 8 по разному обрабатывают NULL
9 сообщений из 9, страница 1 из 1
ASE 12.5 и ASA 8 по разному обрабатывают NULL
    #32603441
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Столкнулся с проблемой при работе в процедурах.
ASE и ASA по разному обрабатывают сравнение с NULL

/*-------Пример----------*/
DECLARE @test_value int
SELECT @test_value = NULL /* только для NULL */

CREATE TABLE #test_table
(
id int null,
aa int null
)

INSERT INTO #test_table( id, aa ) VALUES(1, NULL)

SELECT id, aa
FROM #test_table tt
WHERE tt.aa = @test_value

DROP TABLE #test_table
/*-------------------------------*/

ASA 8.0.2.4398 SELECT не возвращает записей
а в ASE 12.5.0.3 SELECT получит одну запись

Мне нужно, чтобы ASA возвращались записи, как в ASE
кто-нибудь знает, как можно это настроить в ASA?
...
Рейтинг: 0 / 0
ASE 12.5 и ASA 8 по разному обрабатывают NULL
    #32603475
Высоцкий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добавьте в WHERE ... OR поле IS NULL
...
Рейтинг: 0 / 0
ASE 12.5 и ASA 8 по разному обрабатывают NULL
    #32603492
mustlive
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В АСА проверка на NULL работает только если условие будет выглядеть так: where tt.aa is null,
и никак иначе
Попробуй использовать coalesce, что-то типа
where coalesce(tt.aa,"невозможное значение")=coalesce(@test_value,"невозможное значение")
...
Рейтинг: 0 / 0
ASE 12.5 и ASA 8 по разному обрабатывают NULL
    #32603509
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:) я это все это понимаю, как исправить я знаю,
но искать эти места в процедурах, которых более 1000 немного ломает....

а так хотелось все и сразу :)
...
Рейтинг: 0 / 0
ASE 12.5 и ASA 8 по разному обрабатывают NULL
    #32603590
mustlive
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
а так хотелось все и сразу :)

Тогда забить на все и сразу :) и смириться, что эти штуки будут криво работать. Или все же взять в FAQ функцию поиска в процедурах от ASCRUS,
найти все места и полечить
...
Рейтинг: 0 / 0
ASE 12.5 и ASA 8 по разному обрабатывают NULL
    #32603608
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По стандарту ANSISQL NULL всегда не равен NULL и сравнивать нужно
(Field1 IS NULL AND Field2 IS NULL) OR Field1 = Field2
если оба поля могут быть NULL. Так что в ASE в этом плане абсолютно не правильная реализация NULL и желательно везде Ваш код исправить, так как в любой другой СУБД реализацию NULL сделана так же, как и в ASA, то есть по стандарту ANSISQL. Так же рекомендую почитать про функцию ISNULL.
...
Рейтинг: 0 / 0
ASE 12.5 и ASA 8 по разному обрабатывают NULL
    #32603682
Фотография Badger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо, работы меньше не стало, но теперь я знаю,
что работаю в правильном направлении - исправляю :)
...
Рейтинг: 0 / 0
ASE 12.5 и ASA 8 по разному обрабатывают NULL
    #32604895
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опять 25....

set ansinull {on | off}
...
Рейтинг: 0 / 0
ASE 12.5 и ASA 8 по разному обрабатывают NULL
    #32604942
mustlive
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точно, в ASA8 эта опция есть. А в 5-ке нету. Все гениальное просто, как обычно. Даже неинтересно :)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE 12.5 и ASA 8 по разному обрабатывают NULL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]