【问题标题】:How do I use LIKE with a date field in MS Access with a NULL value如何在 MS Access 中将 LIKE 与具有 NULL 值的日期字段一起使用
【发布时间】:2020-04-10 19:19:19
【问题描述】:

我有一个允许部分日期搜索的应用程序。它没有指定日期部分是什么。如果有人输入“20”,它可能是一年中的一部分或一个月中的某一天。

应用程序使用 Access 数据库,其中某些日期字段具有 NULL 值。

我正在尝试使用 [日期字段] LIKE {日期条件}编写查询。

我开始做的是使用 cstr(datefield) 将日期字段转换为字符串,但是 NULL 值给出了 #error 值。

SELECT * ,cstr(datefield) AS strdate FROM table1 

Access 有 ISNULL 函数,但它只接受一个返回 true 或 false 的参数,这与 SQL Server 中的 ISNULL 函数相反,它接受两个参数,如果第一个参数为空,则第二个是要使用的值。

我想我可以在末尾添加“AND datefield IS NOT NULL”,但我想问一下是否有其他可能的解决方案。

然后当我最终到达查询本身时,它没有返回任何结果。

SELECT * ,cstr(datefield) AS strdate 
FROM table1 
WHERE scan_date IS NOT NULL
AND cstr(datefield) LIKE '%20%'

如何对访问中的日期字段进行 LIKE 查询?

【问题讨论】:

  • 这里的大多数人希望样本表数据和预期结果为格式化文本,而不是图像。
  • 示例表数据只是随机日期,这不难想象。我没有显示任何预期结果,因为它与示例表数据相同,只是没有错误。图像显示了错误。这个问题的数据没有什么特别之处。只是日期。

标签: sql ms-access


【解决方案1】:

你可以使用函数Nz():

SELECT * , Nz(datefield) AS strdate 
FROM table
WHERE Nz(datefield) LIKE '*20*'

但是您应该知道,在 Access 中使用的通配符不是%,而是*,这就是您没有得到任何结果的原因。

【讨论】:

  • “讨厌”这个词并不能描述我对 Access 的真实感受。 “厌恶”和“憎恶”做得更好!
  • 很高兴今天能增加你的词汇量!
  • 您可以使用ALIKE '%20%'。实际上,如果不使用GUI(MSAccess.exe)而是通过代码连接数据库,则LIKE必须使用%
  • The First Rule of Programming: It's Always Your Fault。没有工具是完美的。不要责怪 Access!
猜你喜欢
  • 1970-01-01
  • 2011-05-24
  • 1970-01-01
  • 2011-04-01
  • 2017-05-13
  • 1970-01-01
  • 2016-07-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多