postgresql Postgres 中的不等于和空

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/36508815/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-21 02:14:05  来源:igfitidea点击:

Not equal and null in Postgres

postgresql

提问by faiwer

How I can filter SQL results with !=in PostgreSQL SQL query? Example

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

SELECT * FROM "A" WHERE "B" != 'C'

Working. But it's also filtered all record where "B" IS NULL. When I changed query to:

在职的。但它也过滤了所有记录 where "B" IS NULL。当我将查询更改为:

SELECT * FROM "A" WHERE "B" != 'C' OR "B" IS NULL

I'm got right result. O_o. Always, when I need using !=I need also check OR "field" IS NULL? Really?

我得到了正确的结果。哦哦。总是,当我需要使用时,!=我还需要检查OR "field" IS NULL? 真的吗?

It's uncomfortable in Sequelize: { B: { $or: [null, { $not: 'C' }] } }, instead: { B: { $not: 'C' } }:(

在 Sequelize 中很不舒服:{ B: { $or: [null, { $not: 'C' }] } },而是:{ B: { $not: 'C' } }:(

回答by a_horse_with_no_name

You can use the "null safe" operator is distinct frominstead of <>

您可以使用“空安全”运算符is distinct from而不是<>

SELECT * 
FROM "A" 
WHERE "B" is distinct from 'C'

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

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



You should also avoid quoted identifiers. They are much more trouble then they are worth it

您还应该避免引用标识符。他们的麻烦比他们值得