Oracle中奇怪的不等于号

Posted Leo_wlCnBlogs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle中奇怪的不等于号相关的知识,希望对你有一定的参考价值。

 

在Oracle中,不等号有三种:<>,!=,^= 

  例如:

  select * from test where name<>\'xn\'。返回的结果是name不为xn,且name不空的记录。但是这与我们想要得到的结果有出入,因为我们的目的是得到name为xn的全部记录,当然这也包括name为空的记录,所以这些写SQL语句是有问题的。为了解决这个问题,我们可以采用以下两种方案:

select * from test where instr(concat(name,\'xx\'),\'xn\') = 0 ;

select * from test where nvl(name,\'xx\')<>\'xn\' ;

  备注:null只能通过is null或者is not null来判断,其它操作符与null操作都是false。

  各数据库中的字符串连接方法

  1)mysql:CONCAT()

  2)Oracle:CONCAT(),||

  3)SQL Server: +

例如:

SELECT \'this is \'+\'a test\';                         返回值this a test

SELECT CONCAT(\'this is \',\'a test\') from dual;   返回值this a test

SELECT \'this is \'||\'a test\' from dual;           返回值this a test
 
分类: ORACLE

以上是关于Oracle中奇怪的不等于号的主要内容,如果未能解决你的问题,请参考以下文章

Swift 中奇怪的 UInt64 行为

C++ 中奇怪的函数声明和 lambdas

倒计时项目中奇怪的 setInterval 问题

C中奇怪的malloc行为

Typescript 中奇怪的类型推断行为

Firefox 中奇怪的表格渲染