Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Oracle: Пустое значение в поле типа NUMBER, как сделать запрос? / 17 сообщений из 17, страница 1 из 1
20.04.2006, 11:45
    #33678678
vista-rus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle: Пустое значение в поле типа NUMBER, как сделать запрос?
пишу следущий запрос в sqlplus
select isStr, isNum from oracledb.table1 where isStr='41'
выводится следующее

Код: plaintext
1.
2.
3.
 isStr              isNum
-------------- -------------
       41
       41            22


пишу следущий запрос
Код: plaintext
select isStr, isNum from oracledb.table1 where isNum=  ??? ;

что мне нужно всесто вопросов написать? то есть пустое значение типа NUMBER, как в запросе записать?
пробоваk так
Код: plaintext
select isStr, isNum from oracledb.table1 where isNum=  '' ;
или так
Код: plaintext
select isStr, isNum from oracledb.table1 where isNum=  null  ;

но результат пустой, почему так?
В sqlplus выводится
Код: plaintext
 no rows selected 
...
Рейтинг: 0 / 0
20.04.2006, 11:47
    #33678690
Andrew IF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle: Пустое значение в поле типа NUMBER, как сделать запрос?
...
Рейтинг: 0 / 0
20.04.2006, 12:12
    #33678835
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle: Пустое значение в поле типа NUMBER, как сделать запрос?
Код: plaintext
select isStr, isNum from oracledb.table1 where isNum is null
...
Рейтинг: 0 / 0
21.04.2006, 03:58
    #33681011
vista-rus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle: Пустое значение в поле типа NUMBER, как сделать запрос?
?
Код: plaintext
select isStr, isNum from oracledb.table1 where isNum is null


Спасибо
...
Рейтинг: 0 / 0
21.04.2006, 03:59
    #33681012
vista-rus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle: Пустое значение в поле типа NUMBER, как сделать запрос?
Andrew IFТОП популярных вопросов 8. Вопрос. Почему не получается сравнение с пустой строкой?

у меня не строковое поле, а поле типа NUMBER..
...
Рейтинг: 0 / 0
21.04.2006, 08:24
    #33681122
Sergey M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle: Пустое значение в поле типа NUMBER, как сделать запрос?
Пустая строка в оракле - IS NULL
...
Рейтинг: 0 / 0
21.04.2006, 09:37
    #33681236
Andrew IF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle: Пустое значение в поле типа NUMBER, как сделать запрос?
vista-rus Andrew IFТОП популярных вопросов 8. Вопрос. Почему не получается сравнение с пустой строкой?

у меня не строковое поле, а поле типа NUMBER..

Если бы Вы прочитали не только название ссылки, но и содержание и сходили по ссылке в тексте, то узнали бы, что:

Oracle9i SQL Reference
Release 2 (9.2)
Part Number A96540-02
Nulls with Comparison Conditions

To test for nulls, use only the comparison conditions IS NULL and IS NOT NULL. If you use any other condition with nulls and the result depends on the value of the null, then the result is UNKNOWN. Because null represents a lack of data, a null cannot be equal or unequal to any value or to another null.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
20.11.2020, 15:46
    #40020818
qwe_dsa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle: Пустое значение в поле типа NUMBER, как сделать запрос?
вопрос-то не закрыт.
вопрос звучит так
когда, например, в такой процедуре
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
declare
i number;
begin
select sum(t.pay_sum) into i
from PAYS t
where t.del=0;
end;
/


возвращаемое значение
Код: plsql
1.
sum(t.pay_sum) is null


то возникает
Код: plsql
1.
2.
ORA-01403: no data found
ORA-06512: at line 4


и
Код: plsql
1.
nvl(sum(t.pay_sum),0)

тоже не спасает, ибо оно тоже
Код: plsql
1.
 is null

.
Как это разрулить?
...
Рейтинг: 0 / 0
20.11.2020, 15:50
    #40020822
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle: Пустое значение в поле типа NUMBER, как сделать запрос?
Странные вещи Вы говорите.

Покажите нормальный скрипт и запуск из-под sqlplus'а.
...
Рейтинг: 0 / 0
20.11.2020, 15:54
    #40020824
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle: Пустое значение в поле типа NUMBER, как сделать запрос?
qwe_dsa,

Версия оракла, полный скрипт?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
SQL> ed
Wrote file afiedt.buf

  1  declare
  2      n number;
  3  begin
  4      select sum(decode(dummy,'X',1)) into n from dual;
  5      dbms_output.put_line('n: '||n);
  6      select sum(decode(dummy,'X',1)) into n from dual where 1=0;
  7      dbms_output.put_line('n: '||n);
  8      select nvl(sum(decode(dummy,'X',1)), 0) into n from dual where 1=0;
  9      dbms_output.put_line('n: '||n);
 10* end;
SQL> /
n: 1
n:
n: 0

PL/SQL procedure successfully completed.
...
Рейтинг: 0 / 0
20.11.2020, 15:58
    #40020825
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle: Пустое значение в поле типа NUMBER, как сделать запрос?
Наверное, таки запрос другой?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
tst> select nvl(sum(1), 0) from dual where 1=2;

NVL(SUM(1),0)
-------------
            0

tst> select nvl(sum(1), 0) from dual where 1=2 group by dummy;

no rows selected

tst> 
...
Рейтинг: 0 / 0
20.11.2020, 16:15
    #40020829
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle: Пустое значение в поле типа NUMBER, как сделать запрос?
qwe_dsa
Как это разрулить?


Разрулить exception поможет блок exception .

Или ставьте задачу вразумительнее.
...
Рейтинг: 0 / 0
20.11.2020, 16:26
    #40020838
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle: Пустое значение в поле типа NUMBER, как сделать запрос?
Перед тем как "разрулить" нужно понять, в чем же проблема

Такого поведение в Oracle нет. Т.е. проблема/ошибка где-то совершенно в другом месте. IMHO
...
Рейтинг: 0 / 0
20.11.2020, 16:27
    #40020840
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle: Пустое значение в поле типа NUMBER, как сделать запрос?
Leonid Kudryavtsev,

Слава же уже показал в чём скорее всего.
...
Рейтинг: 0 / 0
20.11.2020, 18:01
    #40020860
qwe_dsa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle: Пустое значение в поле типа NUMBER, как сделать запрос?
Вячеслав Любомудров, именно так
Код: plsql
1.
no rows selected

,
Т.е. если я уберу группировку - эксепшн не наступает?
но почему такая разница?
...
Рейтинг: 0 / 0
20.11.2020, 18:07
    #40020865
qwe_dsa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle: Пустое значение в поле типа NUMBER, как сделать запрос?
dmdmdm, можно и обработкой эксепшна, но мне так не нравится, когда разнообразные секции эксепшнов разбросаны по всей процедуре. Мою задачу можно решить с помощью курсора, не попадая на этот эксепшн. Вячеслав на примерах точно показал то, что я пытаюсь уточнить.
...
Рейтинг: 0 / 0
20.11.2020, 18:27
    #40020867
qwe_dsa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Oracle: Пустое значение в поле типа NUMBER, как сделать запрос?
Вячеслав Любомудров
Наверное, таки запрос другой?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
tst> select nvl(sum(1), 0) from dual where 1=2;

NVL(SUM(1),0)
-------------
            0

tst> select nvl(sum(1), 0) from dual where 1=2 group by dummy;

no rows selected

tst> 



да, запрос другой. не то, чтобы разобрался, но просто принял на будущее.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Oracle: Пустое значение в поле типа NUMBER, как сделать запрос? / 17 сообщений из 17, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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