isnull(Field, Value)

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

isnull(Field, Value)

Сообщение Ramzes » 07.11.2006 (Вт) 17:40

есть ли сабж в ANSI SQL (mySQL 4)

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 07.11.2006 (Вт) 17:47

http://downloads.mysql.com/docs/refman-4.0-ru.html.zip

русский мануал по mySQL 4.0 , там все функции приведены.

ISNULL(expr)

Если expr равно NULL, то ISNULL() возвращает 1, в противном случае - 0:


mysql> SELECT ISNULL(1+1);
-> 0
mysql> SELECT ISNULL(1/0);
-> 1


Обратите внимание: при сравнении величин NULL с использованием оператора = всегда будет возвращаться значение FALSE!

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 07.11.2006 (Вт) 17:49

ты наверное спутал с COALESCE


COALESCE(list)

Возвращает первый в списке элемент со значением, не равным NULL:


mysql> SELECT COALESCE(NULL,1);
-> 1
mysql> SELECT COALESCE(NULL,NULL,NULL);
-> NULL

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 07.11.2006 (Вт) 19:01

isnull в T-SQL действует немного не так

Код: Выделить всё
isnull(Field, Value)

в этом случае, если Field is null вренеться Value? мне это и нужно. Один в один :roll:
если нет, так и скажи[/quote]

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 07.11.2006 (Вт) 19:07

Konst_One писал(а):COALESCE(list)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 07.11.2006 (Вт) 20:21

NULLIF, вообще-то.
Lasciate ogni speranza, voi ch'entrate.

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 07.11.2006 (Вт) 21:46

Да ничего он не спутал насчет Transact-SQL:
RefManual писал(а):isnull
Описание: Возвращает значение выражения2, если значение выражения1 равно NULL.
Синтаксис: isnull(выражение 1, выражение 2)
Параметры: Имя столбца, переменная, выражение-константа или любая их комбинация, принимающая одно значение. Аргумент может относиться к любому типу данных, включая unichar. Обычно dыражение – это имя столбца. Если выражение является символьной константой, оно должно быть заключено в кавычки.
Примеры: Этот запрос возвращает все строки таблицы titles, заменяя значения NULL в столбце price на 0:
Код: Выделить всё
select isnull(price,0)
from titles

Использование: Системная функция isnull возвращает значение параметра выражение2, когда выражение1 равно NULL. Общую информацию о системных функциях см. в разделе “Строковые функции”
Типы данных обоих выражений должны неявно преобразовываться друг в друга. В противном случае нужно использовать функцию convert.
Стандарты: Уровень соответствия стандарту SQL92: расширение Transact-SQL.
Полномочия: Функцию isnull может выполнять любой пользователь.


З.Ы. Для MySQL COALESCE действительно наиболее похожая ф-ия (если судить по описанию, т.к. MySQL я практически не знаю).
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 08.11.2006 (Ср) 7:08

Ramzes, ну ты уж определись, какой именно диалект SQL тебе нужен. Ибо то, что реализовано в MySQL имеет весьма отдаленное отношение как к стандарту ANSI, так и к расширениям Microsoft, реализованным в транзакте.

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 08.11.2006 (Ср) 11:47

что касаеться MS SQL, я думаю, я его неплохо знаю.

но вот что касаеться MySql, вообще не рублю, мне нужен именнооэтот диалект.

Спасибо всем

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 08.11.2006 (Ср) 12:09

А чем NULLIF не подходит?
Lasciate ogni speranza, voi ch'entrate.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 08.11.2006 (Ср) 12:20

NULLIF просто другое делает... IFNULL надо :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 08.11.2006 (Ср) 12:54

alibek
я его вообще не пробовал, поэтому трудно сказать, чем он не подходит, вот дойдут руки до PHP, тогда и с кажу :)


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

    TopList  
cron