最近總是看到有網友在討論COUNT(*)與COUNT(1)的區別.
按理,這沒有必要去深入去研究,但常言道:沒有實踐就沒有發言權.為此,我也實踐了一下.
我用的DB有如下三種:
1.MS SQL 2000.
2.INFORMIX 7.3
3.ORACLE 9.2.6
我測試發現,SQL2000與ORACLE都支持COUNT(1)語法,但INFMIX不認識COUNT(1).
INFORMIX只認識COUNT(*).
眾所周知,老師教給大家的都是標准的SQL語法,COUNT(*)是大家都知道的.
但為何微軟和甲骨文都要引進這個COUNT(n)呢?(說明:其中這個n是數字或常量).
個中緣由,目前不得而知.以後有機會再去查證.
但我認為, COUNT(*)與COUNT(1)的區別,就相當於普通話的他,和粵語中的"佢"吧.
即兩者沒有什麼區別,結果都是一樣的.
退一步講,如果兩者真的不一樣的話,那一定是大事件了,即INFORMIX一定會有對應的修正說明出來,可到如今的DB2,都沒有相應的文檔,即這根本不是大事件,也可以說,微軟和甲骨文後來引進的COUNT(1),純屬多余,當然有些網友會說1比SHIFT+8簡略省事.但我們在乎的是一個結果,而不必去深究這一形式.否則"盡信書不如無書!"
按理,這沒有必要去深入去研究,但常言道:沒有實踐就沒有發言權.為此,我也實踐了一下.
我用的DB有如下三種:
1.MS SQL 2000.
2.INFORMIX 7.3
3.ORACLE 9.2.6
我測試發現,SQL2000與ORACLE都支持COUNT(1)語法,但INFMIX不認識COUNT(1).
INFORMIX只認識COUNT(*).
眾所周知,老師教給大家的都是標准的SQL語法,COUNT(*)是大家都知道的.
但為何微軟和甲骨文都要引進這個COUNT(n)呢?(說明:其中這個n是數字或常量).
個中緣由,目前不得而知.以後有機會再去查證.
但我認為, COUNT(*)與COUNT(1)的區別,就相當於普通話的他,和粵語中的"佢"吧.
即兩者沒有什麼區別,結果都是一樣的.
退一步講,如果兩者真的不一樣的話,那一定是大事件了,即INFORMIX一定會有對應的修正說明出來,可到如今的DB2,都沒有相應的文檔,即這根本不是大事件,也可以說,微軟和甲骨文後來引進的COUNT(1),純屬多余,當然有些網友會說1比SHIFT+8簡略省事.但我們在乎的是一個結果,而不必去深究這一形式.否則"盡信書不如無書!"
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13856521/viewspace-401645/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/13856521/viewspace-401645/