Access 中部分列的内部联接
Inner join on a partial column in Access
我正在尝试在 MS Access 2010 中连接两个表,其中连接条件为 part of(A.col1) = B.col2
。到目前为止,我还不知道该怎么做。
我的两个表有这些关键列:
- Table 1 的列
ICD9 Code-Description
* 的值如下:
842.00 - Sprain/strain, wrist
924.11 - Contusion, knee
- 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)
我正在尝试在 MS Access 2010 中连接两个表,其中连接条件为 part of(A.col1) = B.col2
。到目前为止,我还不知道该怎么做。
我的两个表有这些关键列:
- Table 1 的列
ICD9 Code-Description
* 的值如下:842.00 - Sprain/strain, wrist
924.11 - Contusion, knee
- 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)