|
|
|
NULL in the ARGUMENT
|
|||
|---|---|---|---|
|
#18+
Работаем на РВ 10.5 + MSSQL 2005. После перехода с 6.5 на 10.5 возникли проблемы в DW при передачe NULL параметров. Например, в DW есть аргумент as_name. В Selecte написано: Код: plaintext Если написать Код: plaintext В таком виде: Код: plaintext Кто сталкивался, как бороться? Есть какие-нибудь предложения, кроме как добавить во все DW выражения CASE ... WHEN... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2008, 17:04 |
|
||
|
NULL in the ARGUMENT
|
|||
|---|---|---|---|
|
#18+
Что для вас "работает нормально" ? Если "Подавая" NULL вы хотите видеть все строки набора, то надо везде написать WHERE name is null OR name = :as_name ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2008, 17:10 |
|
||
|
NULL in the ARGUMENT
|
|||
|---|---|---|---|
|
#18+
SasaRЧто для вас "работает нормально" ? Если "Подавая" NULL вы хотите видеть все строки набора, то надо везде написать WHERE name is null OR name = :as_name "Нормально" - значит правильно. Т.е. если as_name = "Вася", то нужно получить все строки, где имя равно "Вася". Если посылаем NULL, то нужно получить все строки, где name = null ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2008, 17:17 |
|
||
|
NULL in the ARGUMENT
|
|||
|---|---|---|---|
|
#18+
Riska пишет: > получить все строки, где name = null Извиняюсь за банальность, но сравнение на равенство/неравенство к Null вообще неприменимо. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2008, 17:19 |
|
||
|
NULL in the ARGUMENT
|
|||
|---|---|---|---|
|
#18+
Dim2000 Riska пишет: > получить все строки, где name = null Извиняюсь за банальность, но сравнение на равенство/неравенство к Null вообще неприменимо. Posted via ActualForum NNTP Server 1.4 скорее всего нул передается как стринг ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2008, 17:20 |
|
||
|
NULL in the ARGUMENT
|
|||
|---|---|---|---|
|
#18+
спор не по существу - уверен в SQL - ANSI стандарте написано, что с null значениями надо оперировать как is null / is not null. Приколы типа = null / <> null - от лукавого и ВСЕГДА гарантируют вам разнообразное поведение не только на разных серверах БД, но, иногда, даже в пределах одной линейки. С чем вы в принципе и столкнулись ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2008, 17:22 |
|
||
|
NULL in the ARGUMENT
|
|||
|---|---|---|---|
|
#18+
напишите простой ИФ или же чем вас СВИШЧ не устраивает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2008, 17:25 |
|
||
|
NULL in the ARGUMENT
|
|||
|---|---|---|---|
|
#18+
не знаю - поддерживает ли ваш сервер такое - можно написать WHERE field = isNull(:as_arg, field) - ваще бомба :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2008, 17:26 |
|
||
|
NULL in the ARGUMENT
|
|||
|---|---|---|---|
|
#18+
SasaRне знаю - поддерживает ли ваш сервер такое - можно написать WHERE field = isNull(:as_arg, field) - ваще бомба :) Это типа coalesce() ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2008, 17:28 |
|
||
|
NULL in the ARGUMENT
|
|||
|---|---|---|---|
|
#18+
Dim2000 Riska пишет: > получить все строки, где name = null Извиняюсь за банальность, но сравнение на равенство/неравенство к Null вообще неприменимо. Posted via ActualForum NNTP Server 1.4 в 6.5 Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2008, 17:29 |
|
||
|
NULL in the ARGUMENT
|
|||
|---|---|---|---|
|
#18+
Riska пишет: > в 6.5 name = :as_name работает без проблем Coding to the bug тем и плох, что кусает без предупреждения ;). Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2008, 17:32 |
|
||
|
NULL in the ARGUMENT
|
|||
|---|---|---|---|
|
#18+
SasaRне знаю - поддерживает ли ваш сервер такое - можно написать WHERE field = isNull(:as_arg, field) - ваще бомба :) Даже если и поддерживает, то это не то, что нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2008, 17:33 |
|
||
|
NULL in the ARGUMENT
|
|||
|---|---|---|---|
|
#18+
На самом деле - проблема была тогда, еще в 6.5. Концептуально. Наконец, в 10.5 они сделали поведение более правильным, как бы дебильным оно вам не сейчас не казалось. пробуйте isNull(:as_arg, field) или field is null or field = :as_arg - это то, что Вам надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2008, 17:35 |
|
||
|
NULL in the ARGUMENT
|
|||
|---|---|---|---|
|
#18+
упс.. сорри, вижу.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2008, 17:37 |
|
||
|
NULL in the ARGUMENT
|
|||
|---|---|---|---|
|
#18+
SasaRisNull(:as_arg, field) или field is null or field = :as_arg - это то, что Вам надо. Да не надо! Если as_name = "Вася", то нужно получить только строки, где имя равно "Вася". А в Вашем примере будут получены и NULL значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2008, 17:40 |
|
||
|
NULL in the ARGUMENT
|
|||
|---|---|---|---|
|
#18+
Null в retrieval arguments не передается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2008, 17:41 |
|
||
|
NULL in the ARGUMENT
|
|||
|---|---|---|---|
|
#18+
Локшин МаркNull в retrieval arguments не передается. передается в виде переменной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2008, 17:42 |
|
||
|
NULL in the ARGUMENT
|
|||
|---|---|---|---|
|
#18+
Riska Локшин МаркNull в retrieval arguments не передается. передается в виде переменной. ну, а тип какой у него будет? значит запрос будет искать все записи имя которых "Null" но не Null ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2008, 17:45 |
|
||
|
NULL in the ARGUMENT
|
|||
|---|---|---|---|
|
#18+
Придется по видимому писать CASE. Или (но это тупо) добавить в конец запроса ...and :as_arg is not null and field = :as_arg union select ... повторить запрос, но с ...and :as_arg is null ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2008, 17:49 |
|
||
|
NULL in the ARGUMENT
|
|||
|---|---|---|---|
|
#18+
SasaRПридется по видимому писать CASE. Или (но это тупо) добавить в конец запроса ...and :as_arg is not null and field = :as_arg union select ... повторить запрос, но с ...and :as_arg is null а почему не так? if field = "null" then field is null else field = :as_arg end if ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2008, 17:55 |
|
||
|
NULL in the ARGUMENT
|
|||
|---|---|---|---|
|
#18+
сорри, вот так) if :as_arg = "null" then..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2008, 17:57 |
|
||
|
NULL in the ARGUMENT
|
|||
|---|---|---|---|
|
#18+
Sashuk Riska Локшин МаркNull в retrieval arguments не передается. передается в виде переменной. ну, а тип какой у него будет? значит запрос будет искать все записи имя которых "Null" но не Null Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2008, 17:57 |
|
||
|
NULL in the ARGUMENT
|
|||
|---|---|---|---|
|
#18+
О как, если впадло CASE. Похож на ваш, вначале топика, но со скобками and ((field is null and :as_arg is null) or (:as_arg is not null and field = :as_arg)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2008, 18:00 |
|
||
|
NULL in the ARGUMENT
|
|||
|---|---|---|---|
|
#18+
Сашук, какой ИФ - то ж ЭсКьюЭль запрос в датавинде :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2008, 18:01 |
|
||
|
|

start [/forum/topic.php?fid=15&msg=35552738&tid=1336523]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 153ms |

| 0 / 0 |

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