php – MS Access:如何在DateTime字段中插入NULL
我有一个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. 提前致谢!
请尝试以下方法.这个对我有用:
INSERT INTO sometable ( somedate,somethingelse ) SELECT Null AS Expr1,"foo" AS Expr2; 基本上,您在select查询中包装null,并让SQL弄清楚如何将其表示为插入. – 编辑 – 这应该也有效: INSERT INTO sometable ( somedate,somethingelse ) values (Null,"foo"); 但由于某种原因,它不适用于我的默认安装. 在我预感,我将我的数据库从ANSI-89切换到ANSI-92,并且VALUES方法开始工作.我把它换回ANSI-89,它仍然有效.不仅如此,在我创建的任何新数据库中,它现在也可以工作.奇怪……安装中的某些东西必须通过来回切换来改变(并坚持),而不仅仅是ANSI-89/92.这似乎是我们得到不同结果的原因. 您可以通过转到Office徽标 – >访问选项 – > OBJECT DESIGNERS-> QUERY DESIGN来切换数据库.更改SQL Server兼容语法(ANSI 92) – 并选中“此数据库”. 好的,很奇怪. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |