Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Какая функция в SQL конвертирует Null в ноль? 
:(
    Опции темы
Неопытный
Дата 1.12.2006, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 21.11.2006

Репутация: нет
Всего: нет



Какая функция в SQL конвертирует Null в ноль, В акцес функция Nz, В Delphi она не срабатывает
PM MAIL   Вверх
Akella
Дата 1.12.2006, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



в каком именно SQL?

Добавлено @ 09:30 
можно так
Код

if f = null then f = 0

PM MAIL   Вверх
Неопытный
Дата 1.12.2006, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 21.11.2006

Репутация: нет
Всего: нет



Использую Ado при подключении к Аксесу,
 В компоненте AdoQuery в Sql запрос типа 

'select ... nz(Table1.Pole1) as q ...' 
На nz - пишет неизвесная функция

PM MAIL   Вверх
PROeXT
Дата 1.12.2006, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 12.12.2005
Где: Москва

Репутация: нет
Всего: нет



Можно и средствами самой Delphi обойтись... Например, после открытия запроса:

Код

IF VarIsNull(ADOQuery.FieldByName('q').Value) Then
Begin
 //Получили в результате запроса NUll
End {IF}
Else
 Begin
  {А тут не Null}
 End; {Else}

PM MAIL ICQ   Вверх
ТоляМБА
Дата 1.12.2006, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: 3
Всего: 252



Код

SELECT Table10.one, Table10.two
FROM Table10
where Table10.two is not null
union
select  Table10.one, 0
from table10
where Table10.two is null ;

PM   Вверх
Неопытный
Дата 1.12.2006, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 21.11.2006

Репутация: нет
Всего: нет



Цитата(ТоляМБА @ 1.12.2006,  10:54)
Код

SELECT Table10.one, Table10.two
FROM Table10
where Table10.two is not null
union
select  Table10.one, 0
from table10
where Table10.two is null ;

У вас IsNull в условии where Table10.two is not null
Мне нужно порсто конвертировать Null В 0 в вычислимом поле

...A+Null as B... дает Null

PM MAIL   Вверх
Vas
Дата 1.12.2006, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



Неопытный, скажи что за БД. В них разные функции в оракле например nvl(Field, 0) вместо 0 поставить можно любое число.

Цитата(Неопытный @  1.12.2006,  11:28 Найти цитируемый пост)
Мне нужно порсто конвертировать Null В 0 в вычислимом поле

Интересно, а может просто все числа которые участвуют в вычисляемом поле просто в запросе конвертировать в 0 и тады 0+0=0 будет в вычисляемом поле 0 или что ты там еще хочешь.



--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
Неопытный
Дата 1.12.2006, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 21.11.2006

Репутация: нет
Всего: нет



Я же говорю б.д. Access, nz - не работает

Добавлено @ 12:58 
Цитата

Интересно, а может просто все числа которые участвуют в вычисляемом поле просто в запросе конвертировать в 0 и тады 0+0=0 будет в вычисляемом поле 0 или что ты там еще хочешь.

Так их физически нет!
В запросе присутствует декартово произведение.
Связь A--->B
В результате нек информация берется из таблы A, а чиловая из таблы B,
Если то что есть в A тсутствует в B, в результирующем запросе ест-но вместо числа из B будет
Null. Так вот нужно просто это Null заменить на 0. Нужна функция. Nz - не работает.
Я знаю, что можно Where not is Null ... , но тогда запись не попадет в выборку, а запись все равно нужна. 

PM MAIL   Вверх
Vas
Дата 1.12.2006, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



Используй IIF, вот пример, проверял в Ацессе 2003 работает.
Код

SELECT iif(IsNull([id]),0,[id]), name
FROM mytable;



--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
Неопытный
Дата 1.12.2006, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 21.11.2006

Репутация: нет
Всего: нет



Получилось вроде 
...+Iif(IsNull(x)=0,x,0) as w ...
До этого пробовал 
...+Iif(IsNull(x)=0;x;0) as w ...
Ругается на синтаксис хотя в Аксе 
...+Iif(IsNull(x)=0;x;0) as w ...
странно...

Добавлено @ 13:14 
Цитата(Vas @ 1.12.2006,  13:09)
Используй IIF, вот пример, проверял в Ацессе 2003 работает.
Код

SELECT iif(IsNull([id]),0,[id]), name
FROM mytable;

Блин столько времени потярял из-за ;
Сразу ведь так и делал, но ставил ,
И всетаки почему Nz не работает.

Это сообщение отредактировал(а) Неопытный - 1.12.2006, 13:16
PM MAIL   Вверх
Vas
Дата 1.12.2006, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



Цитата(Неопытный @  1.12.2006,  13:12 Найти цитируемый пост)
И всетаки почему Nz не работает.

У Билла Гейтса спроси  smile 


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
Неопытный
Дата 1.12.2006, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 21.11.2006

Репутация: нет
Всего: нет



Цитата(Vas @ 1.12.2006,  13:21)
Цитата(Неопытный @  1.12.2006,  13:12 Найти цитируемый пост)
И всетаки почему Nz не работает.

У Билла Гейтса спроси  smile

А как с ним связаться, есть телефончик...
PM MAIL   Вверх
comtat
Дата 1.12.2006, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1310
Регистрация: 2.5.2006
Где: Россия, Казань

Репутация: 1
Всего: 71



есть такая функция как isnull(Где определяем, на че меням)


--------------------
Рожденный в СССР !!!
ExtJS - мой фреймворк 
PM   Вверх
sonyi
Дата 16.3.2009, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 14.3.2009

Репутация: нет
Всего: нет



Но при использовании ISNull() выдает ошибку "Capability not supported". Как сделать, чтоб встроеные функции SQL работали в Query?

Это сообщение отредактировал(а) sonyi - 16.3.2009, 20:45
PM MAIL   Вверх
former
Дата 16.3.2009, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 7
Всего: 17



Цитата(sonyi @  16.3.2009,  20:41 Найти цитируемый пост)
ISNull() выдает ошибку "Capability not supported"

И не будет работать, поскольку эта функция возвращает наличие данных в поле.
Нужно:
Код

if ADOQuery1.FieldByName('abc').IsNull=true then


Добавлено @ 20:49
Цитата(sonyi @  16.3.2009,  20:41 Найти цитируемый пост)
Как сделать, чтоб встроеные функции SQL работали в Query?

Что ты хочешь получить в итоге?

Это сообщение отредактировал(а) former - 16.3.2009, 20:51


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0919 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.