检查Postgres sql语句中值是否为空或空字符串的最佳方法是什么?

Value可以是一个很长的表达式,所以在检查时最好只写一次。

目前我正在使用:

coalesce( trim(stringexpression),'')=''

但是看起来有点丑。

Stringexpression可以是char(n)列,也可以是包含char(n)列的表达式,后面带空格。

最好的方法是什么?


当前回答

另一种方法是

nullif(trim(stringExpression),'') is not null

其他回答

另一种方法是

nullif(trim(stringExpression),'') is not null

检查字符串的长度也是有效的,并且是紧凑的:

where length(stringexpression) > 0;

我喜欢yglodt的答案,但对于大的集合和大的字符串来说,计算准确的长度可能是昂贵的,所以我选择:

coalesce(trim('a') > '','f')

在遇到类似的情况时,我必须这样做。我的Table定义如下:

id(bigint)|name (character varying)|results(character varying)
1 | "Peters"| [{"jk1":"jv1"},{"jk1":"jv2"}]
2 | "Russel"| null

为了过滤掉结果列中的null或空,工作是:

SELECT * FROM tablename where results NOT IN  ('null','{}'); 

这将返回结果中不为空的所有行。

我不确定如何修复此查询以返回结果上不为空的相同所有行。

SELECT * FROM tablename where results is not null; 

我错过了什么,选角吗?输入吗?

我看到人们使用的是stringexpression > "。这可能不是最快的,但恰好是最短的。

在MS SQL和PostgreSQL上都试过。