单个查询的临时数据类型转换
Posted
技术标签:
【中文标题】单个查询的临时数据类型转换【英文标题】:Temporary data type casting for a single Query 【发布时间】:2014-04-03 14:56:34 【问题描述】:好吧,我意识到我要问的可能是不可能的,我可以接受。但如果可能的话,它会让我的生活更轻松。
在我的 MS Access 数据库中,我尝试查询 2 个表。这些表都链接到我的 Access DB,一个链接到 Excel 文件 (MSSB Reps DTP
),其中包含来自单独 DB2 数据库的转储。
我的查询中的另一个表 (SalesPage DNK Rep Query
) 链接到另一个 Access DB,后者又链接到 SQL 数据库。这是查询设计屏幕的图像:
表的链接位置并不重要,因为它们是链接表,并且由于这是 MS Access,因此我无法编辑表。因此,我不能简单地进入任一表的设计模式并更改给定列的数据类型。
每个表都有一个名为CRD Number
的列。我想基于此列在这两个表之间创建一个内部连接。只是一个简单的日常内部连接。但是我不能,因为CRD Number
列存储为MSSB Reps DTP
表的数字,以及SalesPage DNK Rep Query 表中的文本。
我想知道是否有某种方法可以临时使用函数将CRD Number
列从MSSB Reps DTP
表中“转换”为文本,以便我可以运行此查询。但是,任何解决方案都将受到赞赏。只是不要告诉我编辑 Excel 文档。由于各种原因,我正在努力避免这种情况。
【问题讨论】:
【参考方案1】:您可以使用CStr
将数字转换为文本。
SELECT *
FROM
[MSSB Reps DTP] AS m
INNER JOIN [SalesPage DNK Rep Query] AS s
ON CStr(m.[CRD Number]) = s.[CRD Number];
Access 查询设计器可能拒绝在设计视图中显示该连接,但您可以切换到 SQL 视图并编辑语句文本。
【讨论】:
太棒了。我会试一试并报告。 好吧,我搞定了。第一次尝试使用该函数时遇到了问题,因为每个表的CRD Number column
都可以包含空值。我只是将is not null
标准添加到我的Where
子句中,这样就防止了每个表中出现空值的可能性。 `
这是我最终使用的代码:FROM [SalesPage DNK Rep Query] INNER JOIN [MSSB Reps DTP] ON [SalesPage DNK Rep Query].CRD_NUMBER = CStr([MSSB Reps DTP].[Crd Number]) WHERE ((([SalesPage DNK Rep Query].CRD_NUMBER) Is Not Null) AND (([MSSB Reps DTP].[Crd Number]) Is Not Null));
以上是关于单个查询的临时数据类型转换的主要内容,如果未能解决你的问题,请参考以下文章
如何在 MS Access 的追加查询中将数据类型从文本转换为是/否?