我创建了表TEST,用于<>数据库Oralce中的use运算符.当您运行以下命令时,我发现奇怪的是不返回任何记录.
为什么不退回任何记录?在SQL Server和Firebird数据库中,该命令有效.
select * from TEST where Adress <> '';
Run Code Online (Sandbox Code Playgroud)
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');
Run Code Online (Sandbox Code Playgroud)
Oracle着名地将空字符串视为null.
你做的是:
select * from TEST where Adress <> null;
Run Code Online (Sandbox Code Playgroud)
...并且与null相比的任何结果都是未定义的.
您必须使用空比较运算符:
select * from TEST where Adress is not null;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
248 次 |
| 最近记录: |