Sql 将部分匹配的两个表连接到完全匹配的表

Sql 将部分匹配的两个表连接到完全匹配的表,sql,ms-access,join,Sql,Ms Access,Join,令人困惑的标题我知道。我正在尝试连接两个表: 表格:项目 +---------------+ | ItemName | +---------------+ | "Banana" | | "~A Apple" | | "~B Orange" | | "Banana ~C" | | "Apple ~CC" | +---------------+ 表格:代码查找 +-------+------------+ | Code | CodeResult | +---

令人困惑的标题我知道。我正在尝试连接两个表:

表格:项目

+---------------+
|  ItemName     |
+---------------+
| "Banana"      |
| "~A Apple"    |
| "~B Orange"   |
| "Banana ~C"   |
| "Apple ~CC"   |
+---------------+
表格:代码查找

+-------+------------+
| Code  | CodeResult |
+-------+------------+
| "~A"  | "One"      |
| "~B"  | "Two"      |
| "~C"  | "Three"    |
| "~CC" | "Four"     |
+-------+------------+
我希望加入这些表,其中显示
项目
表中的所有项目,如果
项目名称
包含一个
“~”
,后跟
项目名称
中任意位置的字母组合(但永远不会碰到另一个词——它总是在多个单词的开头、结尾或中间,两边都有空格)。我希望它与<代码>代码> <代码>值有关。因此< <强>部分匹配> <强> >在<代码> ItMeNe/<代码>中< <强>精确匹配> <强> > <代码>代码> < /> >

我设法得到了以下代码:

SELECT ITEM.*, CODELOOKUP.CodeResult  
FROM ITEM LEFT JOIN CODELOOKUP ON INSTR(ITEM.ItemName, CODELOOKUP.Code)  
这返回了我想要的内容,唯一的问题是它返回了行
“Apple~CC”
两次,其中包含:

+-------------+---------+
| "Banana"    | ""      |
| "~A Apple"  | "One"   |
| "~B Orange" | "Two"   |
| "Banana ~C" | "Three" |
| "Apple ~CC" | "Three" |
| "Apple ~CC" | "Four"  |
+-------------+---------+
…其中,它应该只返回与
“四”
完全匹配的行,如:

+-------------+---------+
| "Banana"    | ""      |
| "~A Apple"  | "One"   |
| "~B Orange" | "Two"   |
| "Banana ~C" | "Three" |
| "Apple ~CC" | "Four"  |
+-------------+---------+
怎样才能让它起作用


谢谢

您只能在部分匹配后加入空格,并在字符串末尾附加空格,以避免匹配
~C
~CC

SELECT ITEM.*, CODELOOKUP.CodeResult
FROM ITEM LEFT JOIN CODELOOKUP ON INSTR(ITEM.ItemName & " ",CODELOOKUP.Code & " ")