Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE 12.5 и ASA 8 по разному обрабатывают NULL / 9 сообщений из 9, страница 1 из 1
14.07.2004, 11:57
    #32603441
Badger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE 12.5 и ASA 8 по разному обрабатывают NULL
Столкнулся с проблемой при работе в процедурах.
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
14.07.2004, 12:09
    #32603475
Высоцкий
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE 12.5 и ASA 8 по разному обрабатывают NULL
Добавьте в WHERE ... OR поле IS NULL
...
Рейтинг: 0 / 0
14.07.2004, 12:13
    #32603492
mustlive
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE 12.5 и ASA 8 по разному обрабатывают NULL
В АСА проверка на NULL работает только если условие будет выглядеть так: where tt.aa is null,
и никак иначе
Попробуй использовать coalesce, что-то типа
where coalesce(tt.aa,"невозможное значение")=coalesce(@test_value,"невозможное значение")
...
Рейтинг: 0 / 0
14.07.2004, 12:18
    #32603509
Badger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE 12.5 и ASA 8 по разному обрабатывают NULL
:) я это все это понимаю, как исправить я знаю,
но искать эти места в процедурах, которых более 1000 немного ломает....

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

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

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


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