Я думаю, что ваш подход хорош:
SELECT *
FROM MyTable
WHERE myCol <> 3 OR myCol IS NULL
Поскольку вы запрашиваете альтернативы, другой способ сделать это состоит в том, чтобы сделать столбец NOT NULL
и сохранить другое (неиспользованное) значение в базе данных.вместо NULL
- например -1
.Тогда выражение myCol <> 3
будет соответствовать вашему поддельному - NULL
, как и любому другому значению.
SELECT *
FROM MyTable
WHERE myCol <> 3
Однако в целом я бы рекомендовал , а не , чтобы использовать этот подход.То, как вы уже делаете это, - правильный путь.
Также стоит упомянуть, что некоторые другие базы данных поддерживают IS DISTINCT FROM
, что делает именно то, что вы хотите:
SELECT *
FROM MyTable
WHERE myCol IS DISTINCT FROM 3
MySQL имеет NULL-safe равно , которое также можно использовать для этой цели:
SELECT *
FROM MyTable
WHERE NOT myCol <=> 3
К сожалению, SQL Server пока не поддерживает ни один из этих синтаксисов.