Access 中部分列的内部联接

Inner join on a partial column in Access

我正在尝试在 MS Access 2010 中连接两个表,其中连接条件为 part of(A.col1) = B.col2。到目前为止,我还不知道该怎么做。

我的两个表有这些关键列:

  1. Table 1 的列 ICD9 Code-Description* 的值如下:
    842.00 - Sprain/strain, wrist
    924.11 - Contusion, knee
  2. Table 2 的列 Dx 的值如下:
    842
    924.11

我试过这两个连接条件:

FROM Table1 
  INNER JOIN Table2 ON Table1.Replace(LTrim(Replace(Left(ICD9Code-Description],
                           (InStr(1,[ICD9Code-Description]," "))-1),"0"," "))," ","0")  
                       = Table2.Dx

SELECT ICD9
  FROM Table2 INNER JOIN 
       (SELECT Replace(LTrim(Replace(Left([ICD9 Code-Description],
              (InStr(1,[ICD9 Code-Description]," "))-1),"0"," "))," ","0") AS ICD9
          FROM Table1)
       ON Diag.DX = ICD9

Access 都不喜欢。

如果可能的话,我想避免将连接条件部分拉出到 Table1 中它自己的列中。

这样做的访问方式是什么?

*不要因为专栏名称而讨厌我。不是我创造的,我只是要支持一下。

Val() 函数 "Returns the numbers contained in a string as a numeric value of appropriate type."(请参阅 Access 内置的 Val 函数 帮助主题帮助系统。)

对于您的情况,"neat thing" 是它从字符串中读取字符,直到它遇到一个不能成为有效数字一部分的字符。但是它不会引发错误。它只保留已收集的数字字符并忽略其余部分。

这是您在“立即”中的两个示例 window ...

? Val("842.00 - Sprain/strain, wrist")
 842 
? Val("924.11 - Contusion, knee")
 924.11 

所以 Val() 应该使您的 JOIN 更简单,即使您还需要将它应用于 Table2.Dx 字符串 ...

FROM
    Table1 INNER JOIN Table2
    ON Val(Table1.[ICD9Code-Description]) = Val(Table2.Dx)