select * from table1
where fld1 < > '' and fld1 is not null
这样写,即''(中间没有空格),oracle中查询结果为空。
但是换成' '(中间有空格),则查询结果为a,b两条记录,即与sql server相同。
但在sql server中,两种写法是一样的。
而我写到table1中的数据insert into table1 values( ''),中间是不带空格的。
oracle不区分''和null,''就是null
所以你的where fld1 < > '' and fld1 is not null
变成了
where fld1 <> null and fld1 is not null
fld1 <> null 进一步等于null
where变成
where null and fld1 is not null
null and (true or false)仍旧是null
最终你的where 条件就是一个null(这时相当于false),所以啥也出不来
=========================================================
更改字段类型
修改oracle数据字段类型时,如果表中有数据可以采用如下方法更改
ALTER TABLE 表名 RENAME COLUMN 字段名 TO 字段名1;
ALTER TABLE 表名 ADD 字段名 VARCHAR2(30);
UPDATE 表名 SET 字段名 = CAST(字段名1 AS VARCHAR2(30));
ALTER TABLE 表名 DROP COLUMN 字段名1;
下面是示例代码:
修改字段ID_NO的类型
---------------------------------------------------------------
ALTER TABLE g3_userinfo RENAME COLUMN ID_NO TO ID_NO1;
ALTER TABLE g3_userinfo ADD ID_NO VARCHAR2(20) ;
UPDATE g3_userinfo SET ID_NO = CAST(ID_NO1 AS VARCHAR2(20));
ALTER TABLE g3_userinfo DROP COLUMN ID_NO1;