将SQL行中的空格视为null

将SQL行中的空格视为null,sql,null,trim,Sql,Null,Trim,假设我从列“Address”不为null的表中获取所有数据 所以我做了一个像这样的陈述 从地址不为空的表中选择* 不幸的是,“地址”列中的行有空格,因此SQL不能将其视为NUL/P> 如何显示地址不为空的行? 谢谢:)大多数数据库系统都有NULLIF()函数。它与COALESCE()一起在if中定义。它至少在SQLServer、Oracle、PostgreSQL、MySQL、SQLite、DB2和Firebird中实现 Select * from Table where NULLIF(Addre

假设我从列“Address”不为null的表中获取所有数据 所以我做了一个像这样的陈述

从地址不为空的表中选择*

不幸的是,“地址”列中的行有空格,因此SQL不能将其视为NUL/P> 如何显示地址不为空的行?


谢谢:)

大多数数据库系统都有NULLIF()函数。它与COALESCE()一起在if中定义。它至少在SQLServer、Oracle、PostgreSQL、MySQL、SQLite、DB2和Firebird中实现

Select * from Table where NULLIF(Address,'') is not null
但对我来说,我更喜欢这个

Select * from Table where Address > ''

它一次杀死空字符串和空字符串。它甚至会排除完全由空格(“”,“”等)组成的字符串。它还保留了讽刺性。

@RichardTheKiwi:Postgres的行为稍有不同:。不确定它是如何配置的。Oracle将把
'
视为
NULL
,所以(我也喜欢这个)
where Address>'
将切断所有行。我称之为bug。比较字符类型的两个值时,将忽略状态
尾随空格,将字符值转换为其他字符串类型时,将删除尾随空格。请注意,尾随空格在字符变化和文本值中具有重要的语义意义。
我几乎可以肯定,它们对于varchar和char都不重要。