我知道令人困惑的标题。我正在尝试加入两个表:
表格:ITEM
+---------------+
| ItemName |
+---------------+
| "Banana" |
| "~A Apple" |
| "~B Orange" |
| "Banana ~C" |
| "Apple ~CC" |
+---------------+
表:CODELOOKUP
+-------+------------+
| Code | CodeResult |
+-------+------------+
| "~A" | "One" |
| "~B" | "Two" |
| "~C" | "Three" |
| "~CC" | "Four" |
+-------+------------+
我希望加入这些表,显示ITEM
表中的所有项目,并且如果ItemName
包含"~"
,后跟{{1 }}(但永远不会碰到另一个单词-它总是在多个单词的开头,结尾或中间,左右两边都有空格)我希望它与ItemName
值相关。因此,CodeResult
中的 PARTIAL MATCH 到ItemName
中的 EXACT MATCH 。
我设法获得了以下代码:
CodeResult
这几乎返回了我所需要的内容,唯一的问题是它用两次返回行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" |
+-------------+---------+
完全匹配的行,如:
"Four"
如何使它起作用?
谢谢
答案 0 :(得分:2)
您只能在部分匹配项后加入空格,然后在字符串末尾添加空格,以避免~C
匹配~CC
:
SELECT ITEM.*, CODELOOKUP.CodeResult
FROM ITEM LEFT JOIN CODELOOKUP ON INSTR(ITEM.ItemName & " ",CODELOOKUP.Code & " ")