一、postgreSQL is not null 和 !=NULL的區(qū)別
按照sql標準來說 = null這種語法本來就是錯誤的,在oracle postgresql mssql等企業(yè)級數(shù)據(jù)庫中這種語法根本就不支持。
判斷是否為null的標準sql規(guī)范是is null 和is not null。
sql是個“公共”的數(shù)據(jù)庫查詢語言有他自己的標準。mysql postgresql mssql oracle等都不同程度的遵循不同的sql標準并且各自都又在自家產(chǎn)品中加入了他自己的特色。
postgresql默認不支持 = null這種語法,但是在配置文件中可以設置開啟支持,會自動的把=null轉(zhuǎn)換成is null,!=null自動轉(zhuǎn)換成is not null
null就是null,null不等于空字符串。
默認情況下做比較條件時使用關鍵字“is null”和“is not null”。
如果你一定要使用!= null來進行條件判斷,需要加上這個命令語句:SET ANSI_NULLS OFF,這時數(shù)據(jù)庫進入ANSI SQL非標準模式,你會發(fā)現(xiàn)IS NOT NULL 和 != null 是等效的了。
這里使用的是模式切換命令SET ANSI_NULLS[ON/OFF]。ON值采用ANSI SQL嚴格標準,OFF值采用非標準兼容模式。另外SET ANSI_DEFAULTS [ON/OFF]命令也可以實現(xiàn)標準的切換,只是這個命令控制的是一組符合SQL-92標準的設置,其中就包括Null值的標準。
延伸閱讀:
二、mysql字符集和排序規(guī)則
所為字符集,就是用來定義字符在數(shù)據(jù)庫中的編碼的集合。常見的字符集有:utf8(支持中文)和AccIS(不支持中文)
數(shù)據(jù)庫中的排序規(guī)則用來定義字符在進行排序和比較的時候的一種規(guī)則。常見的如下:
(1) utf8_general_ci 不區(qū)分大小寫,utf8_general_cs 區(qū)分大小寫
(2) utf8_bin 規(guī)定每個字符串用二進制編碼存儲,區(qū)分大小寫,可以直接存儲二進制的內(nèi)容
說明:所為排序規(guī)則,就是指字符比較時是否區(qū)分大小寫,以及是按照字符編碼進行比較還是直接用二進制數(shù)據(jù)比較
utf8_unicode_ci和utf8_general_ci對中、英文來說沒有實質(zhì)的差別。
utf8_general_ci校對速度快,但準確度稍差。
utf8_unicode_ci準確度高,但校對速度稍慢。
如果你的應用有德語、法語或者俄語,請一定使用utf8_unicode_ci。一般用utf8_general_ci就夠了。
所以一般字符集用utf-8,排序規(guī)則用utf8_general_ci