| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > Какая функция в SQL конвертирует Null в ноль? |
| Автор: Неопытный 1.12.2006, 09:05 |
| Какая функция в SQL конвертирует Null в ноль, В акцес функция Nz, В Delphi она не срабатывает |
| Автор: Akella 1.12.2006, 09:29 | ||
| в каком именно SQL? Добавлено @ 09:30 можно так
|
| Автор: Неопытный 1.12.2006, 09:37 |
| Использую Ado при подключении к Аксесу, В компоненте AdoQuery в Sql запрос типа 'select ... nz(Table1.Pole1) as q ...' На nz - пишет неизвесная функция |
| Автор: PROeXT 1.12.2006, 10:33 | ||
Можно и средствами самой Delphi обойтись... Например, после открытия запроса:
|
| Автор: ТоляМБА 1.12.2006, 10:54 | ||
|
| Автор: Неопытный 1.12.2006, 11:28 | ||||
У вас IsNull в условии where Table10.two is not null Мне нужно порсто конвертировать Null В 0 в вычислимом поле ...A+Null as B... дает Null |
| Автор: Vas 1.12.2006, 11:49 |
| Неопытный, скажи что за БД. В них разные функции в оракле например nvl(Field, 0) вместо 0 поставить можно любое число. Интересно, а может просто все числа которые участвуют в вычисляемом поле просто в запросе конвертировать в 0 и тады 0+0=0 будет в вычисляемом поле 0 или что ты там еще хочешь. |
| Автор: Неопытный 1.12.2006, 12:50 | ||
| Я же говорю б.д. Access, nz - не работает Добавлено @ 12:58
Так их физически нет! В запросе присутствует декартово произведение. Связь A--->B В результате нек информация берется из таблы A, а чиловая из таблы B, Если то что есть в A тсутствует в B, в результирующем запросе ест-но вместо числа из B будет Null. Так вот нужно просто это Null заменить на 0. Нужна функция. Nz - не работает. Я знаю, что можно Where not is Null ... , но тогда запись не попадет в выборку, а запись все равно нужна. |
| Автор: Vas 1.12.2006, 13:09 | ||
Используй IIF, вот пример, проверял в Ацессе 2003 работает.
|
| Автор: Неопытный 1.12.2006, 13:12 | ||||
| Получилось вроде ...+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
Блин столько времени потярял из-за ; Сразу ведь так и делал, но ставил , И всетаки почему Nz не работает. |
| Автор: Vas 1.12.2006, 13:21 |
У Билла Гейтса спроси |
| Автор: Неопытный 1.12.2006, 13:23 | ||
А как с ним связаться, есть телефончик... |
| Автор: comtat 1.12.2006, 16:50 |
| есть такая функция как isnull(Где определяем, на че меням) |
| Автор: sonyi 16.3.2009, 20:41 |
| Но при использовании ISNull() выдает ошибку "Capability not supported". Как сделать, чтоб встроеные функции SQL работали в Query? |
| Автор: former 16.3.2009, 20:46 | ||
И не будет работать, поскольку эта функция возвращает наличие данных в поле. Нужно:
Добавлено @ 20:49 Что ты хочешь получить в итоге? |
| Автор: sonyi 16.3.2009, 20:57 |
| А как тогда быть если в селекте хочу просумировать суму нескольких полей < Sum(Sum(A1)+Sum(A2)+Sum(A3)) >, а одна из A=0 то результат тоже 0? |
| Автор: sonyi 16.3.2009, 21:04 |
| Это правда. Но если при сумме поля А1 имеется хоть один ноль то вся сумма будет 0 (вроде) |
| Автор: former 16.3.2009, 21:05 | ||
| sonyi, Null - это не ноль, а метка о том, что данные в ячейке отсутствуют. При суммировании они просто прибавляться не будут, т.е. фактически будут возвращать ноль (с точки зрения математики). Добавлено через 2 минуты и 14 секунд А - это что, поле?
Это только в том случае, если все строки в А - Null или значения в них равны нулю |
| Автор: sonyi 16.3.2009, 21:20 |
| select Data, A1+A2+A3+A4 as suma from aa where Data BETWEEN "01.02.2009" AND "28.02.2009" //--------------------------- A1..A4 numeric Если хоть один из А1..А4 пустой(Null) то поле suma пустая. Вот токое у меня Добавлено @ 21:21 В SQL-ле работает функция ISNULL(A1,0) а в Делфи нет. |
| Автор: Kbl4AH 16.3.2009, 23:46 |
сильно сказано! я бы сказал, что она работает в Transact-SQL... Т.к., например, в PL/SQL другая функция - nvl(field, value) |
| Автор: sonyi 13.4.2009, 20:21 |
| А какой язык SQL используется в TQuery подключенной к таблице Paradox? Потому что некоторые встроеные функции SQL не работают. |
| Автор: Akella 13.4.2009, 21:18 | ||||
| SQL92? Добавлено через 1 минуту и 52 секунды Только что заглянул в справку по BDE
Добавлено через 2 минуты и 20 секунд
Добавлено через 3 минуты и 13 секунд Какие именно, религия не позволяет написать? Мало того, встроенные куда? |
| Автор: sonyi 13.4.2009, 21:48 | ||
Ну например ISNULL(). |
| Автор: Kbl4AH 13.4.2009, 22:33 | ||
Хм, интересный ты... А почему это в парадоксе должна работать функция из sql сервера (язык Transact-SQL, как я уже говорил выше)??? ЗЫ. Частенько для функций одного языка есть анлогичные функции для других языков...
|