如何在MS Access 2010 SQL中实现字段1包含字段2子串的查询?
在MS Access 2010 SQL中筛选字段包含另一字段子串的记录
要解决这个问题,我们可以利用MS Access原生支持的函数和操作符,避开不支持的CONCAT函数,这里有两种可靠的方案:
方案1:使用LIKE操作符 + 字符串连接符&
MS Access中用&代替CONCAT做字符串拼接,并且通配符用*(而非标准SQL的%)。直接拼接通配符和目标字段,就能实现检查field1是否包含field2的需求:
SELECT * FROM YourTable WHERE field1 LIKE '*' & field2 & '*';
注意事项:
- 如果
field2可能为NULL,可以用Nz函数处理空值,避免意外匹配:SELECT * FROM YourTable WHERE field1 LIKE '*' & Nz(field2, '') & '*' AND field2 IS NOT NULL; -- 排除field2为空的情况,可选 - Access默认
LIKE不区分大小写,如果需要区分大小写,可以搭配模块中的Option Compare Binary设置,或者改用下面的InStr方案。
方案2:使用InStr函数
InStr函数会返回field2在field1中的起始位置,如果返回值大于0,说明field1包含field2,这个方法更直观且性能不错:
SELECT * FROM YourTable WHERE InStr(field1, field2) > 0;
区分大小写的版本:
如果需要严格区分大小写,给InStr加上第三个参数1(代表二进制比较):
SELECT * FROM YourTable WHERE InStr(1, field1, field2, 1) > 0;
内容的提问来源于stack exchange,提问作者Malcolm Farrelle
相关产品推荐
相关产品推荐

