MSAccess - SQL 查询字符右侧或左侧的所有内容

MSAccess - SQL query everything to the right OR left of a character

使用 Ms Access 2016 我正在尝试 运行 SELECT 查询来匹配表 1 和表 2 中列的字符串。我可以通过以下方式做到这一点:

SELECT *
FROM table1 AS a, table2 AS b
WHERE a.luCode LIKE b.Code

table1.luCode只有一个代码,但是,table2.Code有时会有两个代码,用“;”分隔:

table2.Code
--------------------
someCode1
someCode2
someCode3;someCode4
someCode5

如何在“;”的左侧和右侧执行上述查询检查?

到目前为止,我一直在尝试使用 InStr(就在左边):

SELECT *
FROM table1 AS a, table2 AS b
WHERE a.luCode LIKE LEFT(b.Code,(InStr(1,b.Code,";"))-1);

但是我发现数据类型不匹配。 计算这将是空字符串的 "null" 值(在检查它似乎是空字符串之后)我可以添加一个 IIF 语句:

SELECT *
FROM table1 AS a, table2 AS b
WHERE IIF(b.Code<>"",a.luCode LIKE LEFT(b.Code,(InStr(1,b.Code,";"))-1));

这会引发 "invalid procedure call" 错误。

我可以用“;”之后的数据创建一个新列但必须有一种方法可以用 InStr 做到这一点。

首先,这是一种非常非常糟糕的数据格式。您应该有一个 table 每个代码一行,而不是将它们放在一个字符串中。

有时,我们会被其他人糟糕的设计决定所困。这种情况下,你可以试试:

WHERE ';' & b.luCode & ';' LIKE '*;' & a.Code & ';*'

或者使用相同逻辑的instr()