Postgres中不等于null

fai*_*wer 19 postgresql

如何!=在PostgreSQL SQL查询中过滤SQL结果?例

SELECT * FROM "A" WHERE "B" != 'C'
Run Code Online (Sandbox Code Playgroud)

工作.但它也过滤了所有记录"B" IS NULL.当我将查询更改为:

SELECT * FROM "A" WHERE "B" != 'C' OR "B" IS NULL
Run Code Online (Sandbox Code Playgroud)

我的结果是对的.O_O.总是,当我需要使用时!=我还需要检查OR "field" IS NULL?真?

在Sequelize中感到不舒服:{ B: { $or: [null, { $not: 'C' }] } }相反{ B: { $not: 'C' } }:(

a_h*_*ame 46

您可以使用"null safe"运算符is distinct from代替<>

SELECT * 
FROM "A" 
WHERE "B" is distinct from 'C'
Run Code Online (Sandbox Code Playgroud)

http://www.postgresql.org/docs/current/static/functions-comparison.html


您还应该避免使用带引号的标识符.他们是值得的,他们更麻烦

  • 逆“IS NOT DISTINCT FROM”正是我需要的,以便将相等性与可能为空的值进行比较。谢谢你带领我做到这一点! (2认同)