我已经在数据库Oralce中使用运算符TEST
创建了表<>
。
当您运行以下命令时,我发现奇怪的是不返回任何记录。
为什么不返回任何记录?在SQL Server和Firebird数据库中,该命令有效。
select * from TEST where Adress <> '';
http://sqlfiddle.com/#!4/7e89f/2
create table TEST(
ID int not null,
Name varchar2(100) not null,
Adress varchar2(100)
);
alter table TEST add constraint TEST_pk primary key (ID);
insert into TEST values (1, 'Emily', null);
insert into TEST values (2, 'Michael', 'Test');
insert into TEST values (3, 'Daniel', 'Test');
insert into TEST values (4, 'Alexis', 'Test');
答案 0 :(得分:5)
Oracle着名treats an empty string as null。
您的行为与:
相同select * from TEST where Adress <> null;
...以及与null is undefined进行比较的结果。
您必须使用空比较运算符:
select * from TEST where Adress is not null;