【问题标题】:How to join tables together on columns with different datatypes?如何在具有不同数据类型的列上将表连接在一起?
【发布时间】:2009-08-04 16:47:01
【问题描述】:

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

表 A:
参考文本

表 B:
参考编号

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

如果有办法让这种加入成为可能,我会节省各种时间......

【问题讨论】:

    标签: sql database ms-access join types


    【解决方案1】:

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

    我希望在 SQL Server 中创建表 A 的视图,以便在 Access 获取数据之前转换字段的数据类型。您不需要针对其他现有应用程序测试视图。当您的重写使视图不再有用时,只需将其丢弃。

    【讨论】:

    • 我能够通过在 SQL DB 上创建一个视图然后将其带入 Access 并用查询视​​图替换表来完成此操作。感谢您的快速建议。
    【解决方案2】:

    您可以在标准中进行比较。

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

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

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

    HTH

    【讨论】:

      【解决方案3】:

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

      如果您想按字符串进行比较,可以使用Cstr(myNumericColumn) = myStringColumn
      或者要在数字模式下进行比较,请执行CLng(myStringColumn) = myNumericColumn

      【讨论】:

      • 如上,tableA 有一个文本列,而 tableB 有一个整数列。
      • 您可以使用上述任何一种,具体取决于您希望如何比较。
      • 我不明白你的意思。您能否解释一下为什么使用 Cstr 或 Clng 对您的情况没有帮助?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-12
      • 2020-01-28
      • 1970-01-01
      • 1970-01-01
      • 2015-03-25
      • 2016-04-04
      • 1970-01-01
      相关资源
      最近更新 更多