|
|
|
ASE 12.5 и ASA 8 по разному обрабатывают NULL
|
|||
|---|---|---|---|
|
#18+
Столкнулся с проблемой при работе в процедурах. 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? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2004, 11:57 |
|
||
|
ASE 12.5 и ASA 8 по разному обрабатывают NULL
|
|||
|---|---|---|---|
|
#18+
Добавьте в WHERE ... OR поле IS NULL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2004, 12:09 |
|
||
|
ASE 12.5 и ASA 8 по разному обрабатывают NULL
|
|||
|---|---|---|---|
|
#18+
В АСА проверка на NULL работает только если условие будет выглядеть так: where tt.aa is null, и никак иначе Попробуй использовать coalesce, что-то типа where coalesce(tt.aa,"невозможное значение")=coalesce(@test_value,"невозможное значение") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2004, 12:13 |
|
||
|
ASE 12.5 и ASA 8 по разному обрабатывают NULL
|
|||
|---|---|---|---|
|
#18+
:) я это все это понимаю, как исправить я знаю, но искать эти места в процедурах, которых более 1000 немного ломает.... а так хотелось все и сразу :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2004, 12:18 |
|
||
|
ASE 12.5 и ASA 8 по разному обрабатывают NULL
|
|||
|---|---|---|---|
|
#18+
автор а так хотелось все и сразу :) Тогда забить на все и сразу :) и смириться, что эти штуки будут криво работать. Или все же взять в FAQ функцию поиска в процедурах от ASCRUS, найти все места и полечить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2004, 12:42 |
|
||
|
ASE 12.5 и ASA 8 по разному обрабатывают NULL
|
|||
|---|---|---|---|
|
#18+
По стандарту ANSISQL NULL всегда не равен NULL и сравнивать нужно (Field1 IS NULL AND Field2 IS NULL) OR Field1 = Field2 если оба поля могут быть NULL. Так что в ASE в этом плане абсолютно не правильная реализация NULL и желательно везде Ваш код исправить, так как в любой другой СУБД реализацию NULL сделана так же, как и в ASA, то есть по стандарту ANSISQL. Так же рекомендую почитать про функцию ISNULL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2004, 12:49 |
|
||
|
ASE 12.5 и ASA 8 по разному обрабатывают NULL
|
|||
|---|---|---|---|
|
#18+
Всем спасибо, работы меньше не стало, но теперь я знаю, что работаю в правильном направлении - исправляю :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2004, 13:18 |
|
||
|
ASE 12.5 и ASA 8 по разному обрабатывают NULL
|
|||
|---|---|---|---|
|
#18+
Опять 25.... set ansinull {on | off} ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2004, 22:20 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=32604942&tid=2014358]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
157ms |
get topic data: |
15ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
| others: | 14ms |
| total: | 272ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...