如何编写代码将文本转换为数字?

时间:2015-05-07 17:49:11

标签: ms-access ms-access-2003

我正在处理的数据库在一个表中有一个字段作为文本,而另一个表有一个数字格式的字段。我无法在数据库中更改字段格式。因此,在链接(或连接)表以提取数据之前,我需要知道如何将字段从文本转换为数字。

SELECT DISTINCT tblCoachingDB.ID, tblCoachingDB.SourceId, tblCoachingDBSource.ID
FROM tblCoachingDB, tblCoachingDBSource
WHERE (((tblCoachingDB.SourceId)="12"));

tblCoachingDB.SourceID是TEXT,而tblCoachingDBSource.ID是NUMBER

2 个答案:

答案 0 :(得分:1)

您可以使用CStr()将数字转换为文本,将JOIN转换为其他文本字段。

SELECT DISTINCT
    tblCoachingDB.ID,
    tblCoachingDB.SourceId,
    tblCoachingDBSource.ID
FROM
    tblCoachingDB INNER JOIN tblCoachingDBSource
    ON tblCoachingDB.SourceId = CStr(tblCoachingDBSource.ID)
WHERE tblCoachingDB.SourceId='12';

实际上,在您确认WHERE正常工作之前,我会遗漏JOIN子句。

您最初通过将文本字段转换为数字来询问JOIN。我首先建议使用文本,因为我记得Access不太可能反对。但是我对此的记忆不稳定,如果你想在JOIN的两边都有数字,看看哪一个(如果有的话)最适合你:

ON Int(tblCoachingDB.SourceId) = tblCoachingDBSource.ID
ON CLng(tblCoachingDB.SourceId) = tblCoachingDBSource.ID
ON Val(tblCoachingDB.SourceId) = tblCoachingDBSource.ID

注意我提供此建议只是因为您告诉我们您不允许更改 tblCoachingDB 表的设计以使 SourceId 数字而不是text数据类型。由于无法进行此更改,因此转换JOIN字段的数据类型会对运行时性能产生影响。那是是一件好事,但我不知道它会有多糟糕。祝你好运。

答案 1 :(得分:0)

假设tblCoachingDB.SourceID中的所有值都是数字,您可以创建一个查询,从tblCoachingDB EXCEPT SourceID中选择所有字段。然后在查询SourceID中添加一个新字段:clng(tblCoachingDB.SourceID)

然后,您可以在任何需要进行连接的地方使用查询而不是tblCoachingDB。第二种方法是为tblCoachingDBSource创建一个查询并使用SourceID:cstr(tblCoaching.SourceID)第三种方法是:

SELECT * FROM tblCoachingDB, tblCoachingDBSource 
WHERE (clng(tblCoachingDB.SourceId)=tblCoachingDBSource.ID 
AND ((tblCoachingDB.SourceId)="12"));