我正在处理的数据库在一个表中有一个字段作为文本,而另一个表有一个数字格式的字段。我无法在数据库中更改字段格式。因此,在链接(或连接)表以提取数据之前,我需要知道如何将字段从文本转换为数字。
SELECT DISTINCT tblCoachingDB.ID, tblCoachingDB.SourceId, tblCoachingDBSource.ID
FROM tblCoachingDB, tblCoachingDBSource
WHERE (((tblCoachingDB.SourceId)="12"));
tblCoachingDB.SourceID是TEXT,而tblCoachingDBSource.ID是NUMBER
答案 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"));