加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

有关使用Microsoft OLE DB Provider for Jet 4.0的EXCEL中SQL的

发布时间:2020-12-13 22:45:57 所属栏目:Windows 来源:网络整理
导读:EXCEL中的SQL语法是否有任何与Microsoft OLE DB Provider for Jet 4.0相关的参考/手册? 例如,如何编写日期类型的常量? 有哪些关键字/功能/条款? 使用Excel作为Jet 4.0数据源时,我所知道的最佳参考是: How To Use ADO with Excel Data from Visual Basic
EXCEL中的SQL语法是否有任何与Microsoft OLE DB Provider for Jet 4.0相关的参考/手册?

例如,如何编写日期类型的常量?

有哪些关键字/功能/条款?

使用Excel作为Jet 4.0数据源时,我所知道的最佳参考是:

How To Use ADO with Excel Data from Visual Basic or VBA.

特别重要的是如何在包含mixed data types时确定现有列的整体数据类型.

至于Jet 4.0的Microsoft OLE DB提供程序,最相关的文章是这样的:

ADO Provider Properties and Settings: Microsoft Jet 4.0 Provider Properties

也就是说,在前面的文章中更好地介绍了特定于Excel的细节.

使用Excel和SQL时应注意的一个重要问题:

BUG: Memory leak occurs when you query an open Excel worksheet by using ActiveX Data Objects (ADO)

What keywords/functions/clauses are
available?

至于使用Jet 4.0 SQL,这篇文章是我发现的最好的:

Intermediate Microsoft Jet 4.0 SQL

从理论上讲,SQL section of the Access Help应该是相关的,但它是particularly low quality而Jet 4.0的覆盖范围很差.

同样,并非一切都可以直接在Excel中使用.例如,虽然您可以使用CREATE TABLE SQL DDL创建新工作表和工作簿,但您无法创建NOT NULLable列,因为这在物理上是不可能的.此外,Excel的数据类型不那么精细,例如大多数数字类型映射到DOUBLE FLOAT.

至于可以在SQL中使用的表达式,Jet 4.0表达式服务以某种方式使用VBA表达式服务.从广义上讲,Jet可以使用任何VBA 5.0(不是最新版本,即VBA 6.0)函数,它不是一个involl值的方法,并且返回只返回单个值的简单内部数据类型(没有数组,没有对象等) ).我认为我没说明微软从未明确公布过Jet 4.0支持的VBA功能的确切列表.但是,我相信以下文章中的列表恰好与Jet 4.0中可用的VBA函数列表完全一致:

How to configure Jet 4.0 to prevent unsafe functions from running in Access 2003

(该列表位于子标题“使用Jet 4.0 Service Pack 3及更高版本的Sandbox模式操作”下的表格中.)

请注意,某些函数在Jet 4.0中的行为与在VBA中的行为不同.在我的头顶,我可以想到两个. IIF()可以在Jet 4.0中快捷方式(未记录,AFAIK):在VBA中,评估TRUE和FALSE条件,在Jet 4.0中仅评估匹配条件. CDEC()(强制转换为DECIMAL)函数是broken in Jet 4.0.

how do I write constants of type date?
I mean,the way to express
2011.01.20 (this constant value) in SQL,for example,do I use
‘2011-01-20’,or #2011-01-20#,or
something else?

我知道这是一个“文字价值”.

这与VBA相同,即#m / d / yyyy#,所以今天的日期将是#1/20/2011#.但是,我更喜欢使用ISO 8601日期格式和单引号(用于可移植性)并始终包含时间字段(因为Jet 4.0只有一种时态数据类型,即DATETIME),并且为了确保区域设置得到遵守,请使用CDATE()转换为DATETIME函数,例如今天的日期是CDATE(‘2011-01-20 00:00:00’).

[最初认为OP意味着,“如何创建DATE类型的列?”]

你可以使用CREATE TABLE DDL,例如

CREATE TABLE [Excel 8.0;DATABASE=C:MyNewWorkbook.xls].MyTable 
(
 my_date_col DATETIME
);

请注意,虽然Jet 4.0将遵循DATETIME的数据类型,但在Excel中编辑工作簿时没有此类约束:如果扩展表Range并添加非时态数据,则Jet 4.0“看到”的数据类型可能会更改结果是.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读