Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql MS Access查询不返回任何结果_Sql_Ms Access - Fatal编程技术网

Sql MS Access查询不返回任何结果

Sql MS Access查询不返回任何结果,sql,ms-access,Sql,Ms Access,在MS Access 2019中,我有一个客户表,其中包含数百条记录,客户的出生日期为1940年及以后。当我使用下面的查询时,我没有得到任何结果。问题似乎是where条款。我使用相同的函数来计算生日,这很有效,但是当我在where子句中添加相同的函数时,我没有得到任何结果 select id, lastname, birthdate, CInt(Left([birthdate],4)) as birthyear from clients where CInt(Left([birthda

在MS Access 2019中,我有一个客户表,其中包含数百条记录,客户的出生日期为1940年及以后。当我使用下面的查询时,我没有得到任何结果。问题似乎是where条款。我使用相同的函数来计算生日,这很有效,但是当我在where子句中添加相同的函数时,我没有得到任何结果

select id, lastname, birthdate, 
    CInt(Left([birthdate],4)) as birthyear
from clients
where CInt(Left([birthdate],4)) < 1980
我直接用SQL编写查询,不使用Access向导。我想这和T-SQL很相似

Birthdate是一个文本字段,当我使用DateValue函数时,类似的情况也会发生。这就是为什么我使用了一个只包含生日的子字符串,将其转换为Int。由于某些原因,我无法将其与另一个整数进行比较

我错过了什么

更新

当我使用子查询或视图,但在Access中不可能这样做,并筛选出出生日期为空的记录时,我可以执行以下查询而不会出错:

select * from 
(
    select id, lastname, birthdate from clients
    where lcase(birthdate&"") not in ("","null") 
)
where CInt(Left([birthdate],4)) < 1980
是的,空值在此处导出为空

您可能有一些空值。尝试:

CInt(Nz(Left([birthdate],4))) As birthyear
或验证记录并纠正失败的记录:

从客户端选择* 哪里不是生日
您的SQL在一组基本数据上为我工作。但是,如果我在birthdate字段中输入kyh之类的文本,我会得到与您相同的错误,因此我怀疑您的数据存在问题。另外,请注意,名称是Access中的保留字,所以如果可能的话,您应该考虑重命名它。谢谢。我稍微简化了查询,但名称实际上不在查询中。我把它改成了姓。此表中的数据非常混乱,但“生日”字段实际上是正常的。为了确保我会检查数据并稍后回复。请在屏幕截图中显示表的详细信息,重点是生日字段。甚至包括该字段的一些示例值。除非我们相信你的话@Applecore,你说对了。查看我的更新。如果你想知道要点,就回答吧。否则我将批准古斯塔夫的答案。将@Gustav的答案标记为正确。我所做的只是提出了问题所在,而没有给出一个恰当的解决方案。
CInt(Nz(Left([birthdate],4))) As birthyear