按照sql标准来说 = null这种语法本来就是错误的,在oracle postgresql mssql等企业级数据库中这种语法根本就不支持。判断是否为null的标准sql规范是is null 和is not null。sql是个“公共”的数据库查询语言有他自己的标准。
一、postgreSQL is not null 和 !=NULL的区别
按照sql标准来说 = null这种语法本来就是错误的,在oracle postgresql mssql等企业级数据库中这种语法根本就不支持。
判断是否为null的标准sql规范是is null 和is not null。
sql是个“公共”的数据库查询语言有他自己的标准。mysql postgresql mssql oracle等都不同程度的遵循不同的sql标准并且各自都又在自家产品中加入了他自己的特色。
postgresql默认不支持 = null这种语法,但是在配置文件中可以设置开启支持,会自动的把=null转换成is null,!=null自动转换成is not null
null就是null,null不等于空字符串。
默认情况下做比较条件时使用关键字“is null”和“is not null”。
如果你一定要使用!= null来进行条件判断,需要加上这个命令语句:SET ANSI_NULLS OFF,这时数据库进入ANSI SQL非标准模式,你会发现IS NOT NULL 和 != null 是等效的了。
这里使用的是模式切换命令SET ANSI_NULLS[ON/OFF]。ON值采用ANSI SQL严格标准,OFF值采用非标准兼容模式。另外SET ANSI_DEFAULTS [ON/OFF]命令也可以实现标准的切换,只是这个命令控制的是一组符合SQL-92标准的设置,其中就包括Null值的标准。
延伸阅读:
二、mysql字符集和排序规则
所为字符集,就是用来定义字符在数据库中的编码的集合。常见的字符集有:utf8(支持中文)和AccIS(不支持中文)
数据库中的排序规则用来定义字符在进行排序和比较的时候的一种规则。常见的如下:
(1) utf8_general_ci 不区分大小写,utf8_general_cs 区分大小写
(2) utf8_bin 规定每个字符串用二进制编码存储,区分大小写,可以直接存储二进制的内容
说明:所为排序规则,就是指字符比较时是否区分大小写,以及是按照字符编码进行比较还是直接用二进制数据比较
utf8_unicode_ci和utf8_general_ci对中、英文来说没有实质的差别。
utf8_general_ci校对速度快,但准确度稍差。
utf8_unicode_ci准确度高,但校对速度稍慢。
如果你的应用有德语、法语或者俄语,请一定使用utf8_unicode_ci。一般用utf8_general_ci就够了。
所以一般字符集用utf-8,排序规则用utf8_general_ci