php – MS Access:如何在DateTime字段中插入NULL

前端之家收集整理的这篇文章主要介绍了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) – 并选中“此数据库”.

好的,很奇怪.

原文链接:https://www.f2er.com/php/136135.html

猜你在找的PHP相关文章