我认为你的方法很好:
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 equal
也可用于此目的:
SELECT *
FROM MyTable
WHERE NOT myCol <=> 3