当一列是文本而另一列是数字时,如何在Access中连接两个表?

Bry*_*yan 5 sql ms-access join ms-access-2007 access-vba

我有一个访问程序正在使用一些链接的ODBC表.我原来有一个包含以下INNER JOIN的查询:

FROM Neptune_FN_Analysis 
INNER JOIN Neptune_prem ON Neptune_FN_Analysis.PremID = Neptune_prem.premice_id 
Run Code Online (Sandbox Code Playgroud)

这个工作正常,直到Neptune_prem.premice_id列从数字更改为文本数据类型.所以现在我需要一种方法在两列上使用INNER JOIN,一个是数字,另一个是文本.

请记住,我不能简单地更改链接的ODBC表正在查看的表中的数据类型.

如果这是不可能的或一定数量的代码我的另一个逻辑选项是进行查询以创建一个本地表,我可以使用Neptune_FN_Analysis表中的所有相同数据编辑,并在该查询之后的代码中编辑列I我正在加入以输入文字.如果它是合理的,我宁愿只修改这个SQL查询.

HLG*_*GEM 5

首先,我会找出谁做出改变并找出原因.你可能有更大的问题,而不仅仅是让数字匹配.这些变化没有任何理由,如果它们从数字字段变更为文本字段,可能是因为他们需要将文本数据放入字段中,现在如果继续,您将无法进行比较使用数字.数据库更改需要考虑可能受影响的其他内容,而这一点显然没有.找出谁做了它,为什么作为第一步.

  • 真是一堆疯狂的白痴.通常的过程是使用缓冲表来处理非合格数据的数据,并在它到达数据库之前处理它. (5认同)
  • 我和大卫在这一个.通过创建一个小问题来解决一个小问题似乎是一个糟糕的妥协. (2认同)

OMG*_*ies 4

如果您正在谈论将“500”转换为 500,请查看ValCDblCIntCCurCDec和其他转换函数:

FROM Neptune_FN_Analysis 
INNER JOIN Neptune_prem ON Neptune_FN_Analysis.PremID = CInt(Neptune_prem.premice_id)
Run Code Online (Sandbox Code Playgroud)