0
使用女士访问2016我试图运行一个SELECT查询来匹配来自表1和表2的列上的字符串。我可以用下面这样做:MSAccess - SQL查询一切到一个字符的右边或左边
SELECT *
FROM table1 AS a, table2 AS b
WHERE a.luCode LIKE b.Code
table1.luCode只有前夕RHAS一个代码,但是,有时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);
但我得到一个数据类型不匹配。 搞清楚这将是空字符串的任何“空”值(检查后似乎是空的字符串),我可以添加一个IIF语句:
SELECT *
FROM table1 AS a, table2 AS b
WHERE IIF(b.Code<>"",a.luCode LIKE LEFT(b.Code,(InStr(1,b.Code,";"))-1));
这将引发“无效的过程调用”错误。
我可以用“;”之后的数据创建一个新列,但是必须有一种方法可以用InStr来做到这一点。
同意这是一个非常糟糕的主意。以上只是返回不包含“;”的记录(即在b.Code中只有一个代码) –
@OliverBurdekin。 。 。表别名是倒退的。 –
非常好,谢谢Gordon。现在正在工作。我也在研究如何最好地解决这个可怕的数据格式。 –