2014-11-06 65 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