【发布时间】:2011-04-01 21:23:55
【问题描述】:
我有一个 MS Access 数据库(无法忍受),并通过 PHP (ODBC) 与它通信。
我必须在我的 INSERT 语句中包含一个 DateTime 字段。此字段在 Access 中未定义为“必需”,这意味着它确实可以为 NULL,实际上 Access 数据库中的某些行已经为 NULL。
我遇到的问题很简单:如何通过 SQL 插入 NULL?我在网上找到的所有结果都是通过 Visual Basic 或 C# 解决的,而我在 PHP 中通过 ODBC 使用 SQL。
我已经尝试了以下方法:
INSERT INTO table_name (datetime_field) VALUES (NULL)
INSERT INTO table_name (datetime_field) VALUES (#NULL#)
INSERT INTO table_name (datetime_field) VALUES ('NULL')
INSERT INTO table_name (datetime_field) VALUES ('#NULL#')
INSERT INTO table_name (datetime_field) VALUES ('')
(我的查询中还有大约 30 个其他列。)
当我尝试“”或 NULL 时,我得到的确切错误是“条件表达式中的数据类型不匹配”。其他返回解析错误(可以理解)。
请注意,我必须在 INSERT 语句中包含该字段。该字段有一个默认值,但在许多情况下,我传输的原始数据有一个 NULL,在目标数据库中也必须是一个 NULL。
提前致谢!
【问题讨论】:
-
大约有 30 列,它们都不是自动递增的,其中一些有默认值,但它们都在查询本身中。
-
啊,好吧,所以您只是将示例缩减为一列?您是否尝试过更新一行并将字段设置为 NULL 只是为了查看?
-
我同意 Paul Sasik 的观点,我已经在 ADO 和查询设计窗口中的 Access 中尝试过查询,并且 Access 对 null 非常满意。
-
在 Access 中打开数据库并尝试将您的第一个 INSERT 语句作为新查询...暂时将 ODBC 和 PHP 排除在外。根据您告诉我们的所有内容,我不明白为什么 Access 的数据库引擎会拒绝您的第一个示例 INSERT 语句。
-
OP 未使用 Access。 SQL 模式是 Access 设置,而不是 Jet/ACE 设置。因此,您的问题和 OP 的来源不可能相同。
标签: php ms-access odbc ms-access-2007