Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

SQL-запрос, вычисление полей с нулевыми значениями

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных
Предыдущая тема :: Следующая тема  
Автор Сообщение
Ganda



Зарегистрирован: 25.05.2006
Сообщения: 3

СообщениеДобавлено: Пт Июн 02 2006 09:33    Заголовок сообщения: SQL-запрос, вычисление полей с нулевыми значениями Ответить с цитатой

Собственно делаю запрос к базе

select ACCOUNT.ACCOUNTNAME as Счет ,

( (select ACCOUNTLIST.REST from ACCOUNTLIST where ACCOUNTLIST.CUSTID = 0 and ACCOUNTLIST.ACCID = ACCOUNT.ID and ACCOUNTLIST.CURRCODE = 'USD') - (select SUM(OUTMONEY.REST) from OUTMONEY where OUTMONEY.ACCID = ACCOUNT.ID and OUTMONEY.CURRCODE = 'USD')) as 3Доллары from Account

Один из селектов возвращает null значение и соотвественно результат будет null. Возможно ли вернуть не null а реальное число в виде 0?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
kolobok0



Зарегистрирован: 22.04.2005
Сообщения: 253
Откуда: Мсква

СообщениеДобавлено: Пт Июн 02 2006 13:56    Заголовок сообщения: Re: SQL-запрос, вычисление полей с нулевыми значениями Ответить с цитатой

Ganda писал(а):
Собственно делаю запрос к базе

select ACCOUNT.ACCOUNTNAME as Счет ,

( (select ACCOUNTLIST.REST from ACCOUNTLIST where ACCOUNTLIST.CUSTID = 0 and ACCOUNTLIST.ACCID = ACCOUNT.ID and ACCOUNTLIST.CURRCODE = 'USD') - (select SUM(OUTMONEY.REST) from OUTMONEY where OUTMONEY.ACCID = ACCOUNT.ID and OUTMONEY.CURRCODE = 'USD')) as 3Доллары from Account

Один из селектов возвращает null значение и соотвественно результат будет null. Возможно ли вернуть не null а реальное число в виде 0?


если задача состоит в трактовке NULL значения как нолик - то возможны два пути..
1) на стороне клиента. Проверяете значение поля на нулевой признак (типа булевской переменной должно быть, либо спец. опрос на предмет NULL)
2) на стороне сервака. Тут зависит от движка. Например в ORACLE есть очень замечательная встроенная функция NVL(....) можно задать (если не изменяет память) любое значение вместо NULLа. Более подробно - см. доку на свой движок.


с уважением
(круглый)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Иван царевич



Зарегистрирован: 20.06.2006
Сообщения: 10

СообщениеДобавлено: Вт Июн 20 2006 16:18    Заголовок сообщения: Re: SQL-запрос, вычисление полей с нулевыми значениями Ответить с цитатой

Ganda писал(а):
Собственно делаю запрос к базе

select ACCOUNT.ACCOUNTNAME as Счет ,

( (select ACCOUNTLIST.REST from ACCOUNTLIST where ACCOUNTLIST.CUSTID = 0 and ACCOUNTLIST.ACCID = ACCOUNT.ID and ACCOUNTLIST.CURRCODE = 'USD') - (select SUM(OUTMONEY.REST) from OUTMONEY where OUTMONEY.ACCID = ACCOUNT.ID and OUTMONEY.CURRCODE = 'USD')) as 3Доллары from Account

Один из селектов возвращает null значение и соотвественно результат будет null. Возможно ли вернуть не null а реальное число в виде 0?


В MSSQLServer это пишется через оператор isnull...
синтаксис таков:
isnull((<запрос который возвращает значение null>),(<выводимое по данному случаю значение> ))
пример:
select isnull((select null),0)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...