日期:2014-05-18  浏览次数:20431 次

急啊,一个简单的SELECT语句,请高手们帮忙啊。
本人有一个access表(table1)字段及内容如下:
a1         a2         a3       a4
1         200       100     NULL
2         400       200     200
3         500       null   300

本人想得出一个数据集,要求a2> a4,即可。
我是这样写的:

select   *   from   table1   where   a2> a4;
执行后,结果为空表。

如果这样写:select   *   from   table1   where   isnull(a2,0)> isnull(a4,0);
出错是:[Microsoft][ODBC   Microsoft   Access   Driver]   用于函数参数的个数不对   在查询表达式   '(a2> isnull(a4,0)) '   中。

请高手们帮忙啊。
另,表中字段名均为中文有关系吗?


------解决方案--------------------
返回布尔值,表示表达式 (表达式:算术或逻辑运算符、常数、函数和字段名称、控件和属性的任意组合,计算结果为单个值。表达式可执行计算、操作字符或测试数据。)是否包含无效数据 (Null (Null:可以在字段中输入或用于表达式和查询,以标明丢失或未知的数据。在 Visual Basic 中,Null 关键字表示 Null 值。有些字段(如主键字段)不可以包含 Null 值。))。

语法

IsNull(expression)

必选的 expression 参数 (参数:为操作、事件、方法、属性、函数或过程提供信息的值。)是 Variant (Variant 数据类型:变量的默认数据类型,如果 Def type 语句没有生效,则该数据类型没有类型声明字符。Variant 可以存储数值、字符串、日期/时间、Null 或 Empty 数据。) 类型的值,其中包含数值表达式 (数值表达式:计算结果为数字的任何表达式。表达式可以是变量、常数、函数和运算符的任意组合。)或字符串表达式 (字符串表达式:任一求值为一列连续字符的表达式。表达式的元素可以是:返回字符串或字符串 Variant (VarType 8) 的函数;字符串字面值、常量、变量或 Variant。)。

注解

如果 expression 为 Null,则 IsNull 返回 True;否则 IsNull 返回 False。如果 expression 包含多个变量 (变量:已命名存储位置,所包含的数据能够在程序执行过程中发生变动。每一变量都有名称,在它的作用域级别范围内能够唯一标识该变量。既可以指定数据类型,也可以不指定。),则构成该表达式的任何变量中的 Null 都会导致整个表达式返回 True。

Null 值表示 Variant 类型的值包含无效数据。Null 与空 (空:未初始化的 Variant 变量(它返回为 0 的 VarType)的状态。请不要与 Null(指示无效数据的变量状态)、包含零长度字符串 ( " ") 的变量或等于零的数字变量混淆。)不同,后者表示尚未初始化变量。它也与零长度字符串 ( " ") 不同,后者有时指空字符串。

要点 使用 IsNull 函数确定表达式是否包含 Null 值。在有些情况下(如 If Var = Null 和 If Var <> Null),您可能预期其值为 True 的表达式始终为 False。这是因为任何包含 Null 的表达式本身就为 Null,因此该表达式为 False。

示例
注释 以下示例演示了此功能在 Visual Basic for Applications (VBA) 模块中的使用。有关使用 VBA 的详细信息,请在“搜索”旁边的下拉列表中选择“开发人员参考”,然后在搜索框中输入一个或多个词条。

以下示例使用 IsNull 函数确定变量是否包含 Null。

Dim MyVar, MyCheck
MyCheck = IsNull(MyVar) ' Returns False.

MyVar = " "
MyCheck = IsNull(MyVar) ' Returns False.

MyVar = Null
MyCheck = IsNull(MyVar) ' Returns True.