Что эквивалентно функции Nz в MS Access в MySQL? Является ли Nz стандартом SQL? - PullRequest
10 голосов
/ 22 октября 2008

Что такое MySQL эквивалент функции Nz в Microsoft Access? Является ли Nz стандартом SQL?

В Access функция Nz позволяет вам возвращать значение, когда вариант равен нулю. Источник

Синтаксис для функции Nz:

Nz ( variant, [ value_if_null ] )

Ответы [ 5 ]

11 голосов
/ 22 октября 2008

Функция COALESCE() делает то, что вы описываете. Это стандартный SQL, и он должен поддерживаться во всех базах данных SQL.

Функция IFNULL() не является стандартным SQL. Только некоторые базы данных поддерживают эту функцию.

3 голосов
/ 22 октября 2008

Возможно, вы захотите посмотреть на IFNULL или COALESCE. Если я правильно помню, IFNULL работает для MySQL.

2 голосов
/ 11 мая 2013

COALESCE выполняет только то, что запрашивает OP, как и IFNULL:

SELECT Nz(MightBeNullVar, 0) FROM ...  (MS Access version)
SELECT COALESCE(MightBeNullVar, 0) FROM ... (MySQL version)
SELECT IFNULL(MightBeNullVar, 0) FROM ... (MySQL version)

Разница в том, что COALESCE может искать по нескольким переменным и возвращать первую ненулевую:

SELECT COALESCE(MightBeNullVar, MightAlsoBeNullVar, CouldBeNullVar, 0) FROM ... (MySQL version)

каждое из них вернет 0 (ноль), если ни одно из значений не имеет заданного значения (равно нулю).

IFNULL (довольно бессмысленно) быстрее. Возможно, в вашем запросе есть и другие вещи, которые лучше оптимизировать, прежде чем беспокоиться о проблемах IFNULL и COALESCE. Если у вас есть несколько вещей, чтобы проверить, используйте COALESCE. Если у вас есть только одно значение для проверки, используйте IFNULL.

0 голосов
/ 28 ноября 2013

Посмотрите на нулевой безопасный оператор <=>

Может быть, это может помочь: http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html#operator_equal-to

0 голосов
/ 01 сентября 2011

Возможно, было бы полезно знать, что на самом деле делает функция MS Access NZ () (перед ответом с совершенно неверными предложениями). Функциональный тест NZ () для Null и заменяет Null пустой строкой, нулем или, необязательно, значением, которое вводит пользователь.

COALESCE даже близко не подходит, на самом деле он возвращает Null, если нет none Null в «List ???»

IFNULL () Функция - это то, что вы ищете.

http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...