.NET查询条件中的空与Oracle数据库中的空有何不同?? 如在.NET的程序中写这样的查询语句: string filter = ""; string sql = "select * from t_table where name='" + filter + "'";
咋看之下这个查询执行应该是没有什么问题的,但是结果却是没有任何数据能被查询出来;就算改成如下语句也没用: string sql = "select * from t_table where nvl(name,'' ='" + filter + "'";
下午花了很久才发现这里面的问题:这个主要是因为Oracle里面把''(空字符,中间没有空格)作为NULL来处理,如果将上面的语句改成下面这样就能查出name字段为空的数据行: select * from t_table where trim(name) is null 或 select * from t_table where nvl(name,'') is null