Нулевая подстановка в SQLite: - PullRequest
4 голосов
/ 03 ноября 2011

В Sybase и MSSqlServer TransactSQL у нас есть функция IsNull (columnName, valueForNull), которая возвращает типизированное значение по умолчанию, когда значение столбца равно нулю. Как я могу воспроизвести эту функцию в SQLite?

Пример в TransactSQL:

select IsNull(MyColumn,-1) as MyColumn from MyTable

Если MyColumn равно нулю, это выражение вернет -1 в качестве значения MyColumn. Хотите сделать что-то подобное в SQLite.

(Да, я знаю, что могу написать свою собственную функцию-обертку, чтобы справиться с этим - это не тот ответ, который я ищу)

1012 * ТИА *

Ответы [ 4 ]

7 голосов
/ 03 ноября 2011

Вы должны использовать стандартную функцию COALESCE :

select coalesce(MyColumn, -1) as MyColumn from MyTable

Любая база данных, которая понимает стандарт ANSI SQL, будет поддерживать COALESCE, поэтому использовать ее - хорошая привычка.

6 голосов
/ 03 ноября 2011

Вы можете использовать ifnull :

select ifnull(MyColumn,-1) as MyColumn from MyTable
3 голосов
/ 03 ноября 2011

Стандартный способ SQL сделать это с помощью CASE:

 SELECT CASE WHEN MyColumn IS NULL THEN -1 ELSE MyColumn END FROM MyTable

Значительно более подробный, чем специфичные для движка функции IFNULL, ISNULL, NZ, но более переносимый.

(Или,как указывает мю, вы можете использовать для этого гораздо лучший COALESCE).

2 голосов
/ 03 ноября 2011

SQLite имеет встроенную функцию IFNULL () , которая будет делать то, что, я думаю, вы пытаетесь здесь.

...