oracle <>' ' 和 is not NULL的区别?
发布网友
发布时间:2022-04-28 22:25
我来回答
共2个回答
热心网友
时间:2022-04-10 06:35
转:
默认情况下,推荐使用 IS NOT NULL去做条件判断,因为SQL默认情况下对WHERE XX!= Null的判断会永远返回0行,却不会提示语法错误。
SQL Server文档中对Null值的比较运算定义了两种规则,如在SQL Server 2000中:
规则一是是ANSISQL(SQL-92)规定的Null值的比较取值结果都为False,既Null=Null取值也是False。另一种不准循ANSISQL标准,即Null=Null为True。:
例如数据表test结构:
ROWNUM DATA
-------------------
1 'Liu Yang'
2 Null
3 '12345'
按照ANSI SQL标准,下面的两个查询都不返回任何行:
查询一: SELECT * FROM test WHERE data=NULL
查询二: SELECT * FROM test WHERE data<>NULL
而按照非ANSI SQL标准,查询1将返回第二行,查询2返回1、3行。
这是因为在SQL中,NULL是一种特有的数据类型,其等价于没有任何值、是未知数。NULL与0、空字符串、空格都不同。
ANSI SQL标准中取得Null值的行需要用下面的查询:
SELECT * FROM test WHERE data IS NULL
由此可见非ANSI SQL标准中data=NULL等同于data IS NULL,data<>NULL等同于data IS NOT 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值的标准。
默认情况下,数据库管理程序(DB-Library)是SET ANSI_NULLS为OFF的。但是我们的大多数应用程序,都是通过ODBC或者OLEDB来访问数据库的,作为一种开放兼容的数据库访问程序,或许是兼容性的考虑,SETANSI_NULLS值设置为ON。这样一来带来的一些问题是需要注意的。像存储过程或者自定义函数这样的应用程序都是基于DB-Library的,默认情况下,SETANSI_NULLS为OFF,并且在这样的程序中,不能使用SETANSI_NULLS在一个环境中修改规则,只能修改数据库配置参数。
例如下面这种情况:你的应用程序使用ADODB来访问数据库,采用OleDb或者ODBC数据提供程序。对于查询一: SELECT * FROM test WHERE data=NULL
我们可以直接发送命令取得查询结果集,也可把它放到存储过程当中。但二者查询结果不同。若直接使用查询命令,不返回任何行;而如果访问存储过程,返回第2行的数据。
最后,我们再次声明:数据库默认情况下,做SQL条件查询比较时使用关键字“is null”和“is not null”。
热心网友
时间:2022-04-10 07:53
<>''只能判断空字符串,is Null是对Null字符的判断,两种完全不同的数据。一个是空字符,是个字符串,只不过是没有值,另一个是空值(Null)。
Null在数据库中是特有的一类数据。
='' 和<>''
is null和is not null
oracle <>' ' 和 is not NULL的区别?
我们可以直接发送命令取得查询结果集,也可把它放到存储过程当中。但二者查询结果不同。若直接使用查询命令,不返回任何行;而如果访问存储过程,返回第2行的数据。最后,我们再次声明:数据库默认情况下,做SQL条件查询比较时使用关键字“is null”和“is not null”。
oracle,查非空数据,是is not null好,还是lenght>0,好,两个,哪个效率高...
is not null,用不了索引。length 可以建立一个函数索引。不过看数据情况,可能索引用途不大。
oracle 中is null 和=null有说明区别?
在oracle中,判断一个字段或者一个变量是否为null 语法是 is null。返回的结果是boolean型。如果使用 = null,会返回null。如果在代码或语句中使用,可能会获取不到结果或者报错。另外,null并不表示不存在,而是未知,我们通常成为“UNKNOWN”。
Oracle 中 查询语句 is null 的字段,注意与=''的区别是什么?
IS NULL是判断某个字段是否为空,为空并不等价于为空字符串或为数字0;而 =NULL 是判断某个值是否等于 NULL,NULL = NULL和NULL <> NULL都为 FALSE。
在查询SQL语句中为空或者不为空的字段应该怎么写?
如果是空字符串就字段名= '' 。如果是不等于空字符字段名 <> ''。如果是 null值 就是 字段名is null或者not null。oracle sql查询结果为空时如何显示一条空记录:1、我们来看下oracle sql普通查询时查询结果为空时的显示情况如下图所示。可以看到没做特殊处理时查询结果中一条记录都没有,此处...
oracle有and not这个用法吗
oracle中并没有and not的用法,not一般是与is或者in或者exists一起使用的,比如判断某个字段为空或不为空 字段名 is null 或者 字段名 is not null 例如:select a.* from a where a.num='12' and a.name='34' and sex is not null 判断性别不为空。此外还有not in 和not exists ,都...
Oracle通配符,运算符的使用
范围 beeen……and not beeen……and 匹配测试 like not like Null测试 is null is not null 布尔链接 and or not 通配符 在where子句中 通配符可与like条件一起使用 在Oracle中 (百分号) 用来表示任意数量的字符 或者可能根本没有字符 _(下划线) 表示确切的未知字符 ?(问号) 用来表示确切...
Oracle中查询某字段不为空的SQL语句怎么写
sql中判断非空不能用等号,因为null在sql中被看作特殊符号,必须使用关键字 is和not select * from A where info is not null 问题延展:不为空有2中种,不是空值 is not null 不是空格 <>""
ORACLE优化SQL语句,提高效率(2)
( )避免在索引列上使用IS NULL和IS NOT NULL 避免在索引中使用任何能够为空的列 Oracle将无法使用该索引 对于单列索引 假如列包含空值 索引中将不存在此记录 对于复合索引 假如每个列都为空 索引中同样不存在此记录 假如至少有一个列不为空 则记录存在于索引中 举例 假如唯一性索引建立在表的A列...
oracle 查询条件中判断两个字段相等时 一个字段为空则跳过
是当某值为空 赋给什么值 不符合楼主的要求 --我帮你改下 执行时 先判断全面的条件 就过滤掉了空值 还有‘’ 和null 是不一样的 所以都要过滤 --希望解决了楼主的问题 where t<>'' and t is not nul and t2<>'' and t2 is not null and t.dataTime=t2.dataTime ...