我在MS Access中有一个客户列表,想要过滤它们。 有几个关键字不得包含在客户的名称字段中。
因此,如果客户的“姓名”包含“有限公司”等字样或“公司”不得被选中。
禁止的关键字列在另一个名为“关键字”的访问表中。
是否可以告诉查询选择所有客户,除非那些名称中包含关键字表中关键字的客户?
非常感谢你。 : - )
答案 0 :(得分:1)
您可以使用not exists
子句执行此操作。以下显示了使用like
:
select c.*
from customers as c
where not exists (select 1
from keywords as k
where c.name like "*"&k.word&"*"
);
说实话,我并非100%确定Access允许like
中的模式进行字符串连接(它有许多来自其他数据库的奇怪变体)。如果这不起作用,那么基本的想法就会出现。
如果like
不起作用,您可以使用instr()
:
select c.*
from customers as c
where not exists (select 1
from keywords as k
where instr(c.name, k.word) > 0
);
答案 1 :(得分:0)
您可以使用instr搜索公司名称中的密钥。这是示例查询。
SELECT myCompany.CompanyID, myCompany.CompanyName
FROM myCompany, tblkey
where INSTR(myCompany.CompanyName , tblKey.key_name)=0;