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

How to write a code to convert text into a number?

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

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

tblCoachingDB.SourceID 是文本,而 tblCoachingDBSource.ID 是数字

假设 tblCoachingDB.SourceID 中的所有值都是数字,您可以创建一个查询,从 tblCoachingDB 中选择除 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"));

您可以使用 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';

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

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

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

注意我提出这个建议只是因为你告诉我们你不被允许改变你的 tblCoachingDB table 的设计来制作 SourceId 数字而不是文本数据类型。由于您无法进行该更改,因此您将不得不忍受转换 JOIN 字段的数据类型对性能的 运行 时间影响。那是不是好事,但我不知道会有多坏。祝你好运。