单个查询的临时数据类型转换

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 的追加查询中将数据类型从文本转换为是/否?

如何从字符串转换为日期数据类型?

在单个查询中将VARCHAR(max)列转换为大写,然后转换为XML

ABAP 内表数据类型转换

基本语言

php变量和数据类型