2014-11-06 69 views
0

我可以知道Postgres中的''NULL有何不同?Postgres value''单引号vs NULL

我列类型设置为character varying (255)

在我的表中的列字段设置为“”和NULL。

的记录如下:

|Name |Mobile| 
|James| '' | 
|John |  | 

但是,当我查询选择:

  1. Select Name from user where Mobile ='';
  2. Select Name from user where Mobile is null;

两者都返回了我不同的结果。

感谢有人能够帮助和协助解决此问题。

感谢

+4

是,一个空字符串'“”'的东西比在Postgres的一个'NULL'值不同,几乎除了甲骨文每一个DBMS。 – 2014-11-06 11:32:25

+0

'NULL'表示“未知”。空字符串仍然是一个字符串。你知道它是什么和它的价值。 – 2014-11-06 11:35:00

回答

2
  • NULL用于表示遗漏值
  • ''是对应于一个空字符串

我建议您.psqlrc增加\pset null '(null)'的值。然后,

SELECT Name, Mobile from user 

将返回

|Name |Mobile| 
|James|  | 
|John |(null)| 

这使得更容易在命令行中使用的Postgres时区分空字符串和缺失值。

0

你甚至不能做:

Select Name from user where Mobile = null 

因为NULL不是 “等于” NULL。 (空值表示未知值,并且不知道两个未知值是否相等。)此行为符合SQL标准。

Source