如何在具有不同数据类型的列上将表连接在一起?

时间:2009-08-04 16:47:02

标签: sql database ms-access join types

Microsoft Access实现在尝试执行打开某些查询的宏时抛出了类型不匹配错误。大多数表都链接到SQL Server,我需要将两个表连接在一起,这些表具有不同的数据类型。

表A:
参考文本

表B:
REFNO号码

我通常希望纠正SQL Server端的问题,但是有多个应用程序访问同一个数据库,并且需要花费大量时间来测试所有这些。此外,我们正在完全重写此应用程序,我今天所做的任何工作都完全丢掉......

如果有一种方法可以在访问中进行此连接,我会节省各种时间......

3 个答案:

答案 0 :(得分:3)

在Access中,您可以使用CLng(或Cint)函数将表A的REFERENCE值从文本转换为数字。

我更喜欢在SQL Server中创建表A的视图,以在Access获取数据之前转换字段的数据类型。您不应该针对其他现有应用测试该视图。重写时,视图不再有用,只需将其丢弃即可。

答案 1 :(得分:2)

您可以在条件中进行比较。

SELECT [REFERENCE], [REFNO]
FROM [Table a], [Table b]
WHERE [REFERENCE]=cstr(nz([REFNO],""))

您还可以执行直通 - 在sql服务器上执行的访问查询并仅返回数据。

SELECT [REFERENCE], [REFNO]
FROM [Table a], [Table b]
WHERE [REFERENCE]=cast([REFNO] as varchar(25))

HTH

答案 2 :(得分:1)

您提到的每个列的数据类型是什么?

如果您想逐字对照,可以Cstr(myNumericColumn) = myStringColumn 或者要在数字模式下进行比较,请执行CLng(myStringColumn) = myNumericColumn