You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel 2013连接Access数据库LIKE查询匹配规则咨询

解决Access中带LIKE的SELECT语句匹配问题

你当前遇到的问题是因为写的LIKE模式范围太宽了——你的语句SELECT * FROM table_name WHERE column_name LIKE '%[0-9][0-9][0-9][_][a-z]'会匹配任何包含3位数字+下划线+单个小写字母的列值,不管这个组合出现在字符串的哪个位置。比如示例2里的023_tr包含023_t,示例3里的0214_dg包含214_d,所以都会被命中,自然返回了所有值。

根据你只想要第一个示例的需求(也就是最后一段是3位数字+下划线+字符串的列值),给你两个实用的方案:

方案一:匹配斜杠分隔的最后一段(适合路径类值)

如果你的列值都是类似路径的格式(用斜杠分隔),且需要最后一段是ddd_xxxx(ddd是3位数字,xxxx是任意字符串),可以结合INSTRREV函数提取最后一段再匹配:

SELECT * FROM table_name
WHERE RIGHT(column_name, LEN(column_name) - INSTRREV(column_name, '/')) LIKE '[0-9][0-9][0-9][_]%'
  • INSTRREV(column_name, '/')会找到最后一个斜杠的位置
  • RIGHT(...)用来提取斜杠后面的最后一段内容
  • LIKE '[0-9][0-9][0-9][_]%'确保最后一段是以3位数字+下划线开头的

方案二:精确匹配结尾的3位数字+下划线+字符串

如果你需要严格匹配整个列值的结尾部分是ddd_xxxx(xxxx是任意长度的非空字符串),可以用以下条件组合:

SELECT * FROM table_name
WHERE
    -- 确保字符串里有下划线
    INSTRREV(column_name, '_') > 0
    -- 下划线前面至少有3位字符(够放3位数字)
    AND INSTRREV(column_name, '_') - 3 >= 1
    -- 下划线前的3位是数字
    AND MID(column_name, INSTRREV(column_name, '_') - 3, 3) LIKE '[0-9][0-9][0-9]'
    -- 下划线后面有字符(避免匹配以ddd_结尾的情况)
    AND LEN(column_name) > INSTRREV(column_name, '_')

另外提个Access LIKE的小细节:下划线_本身是单个任意字符的通配符,所以你用[_]匹配字面下划线的写法是正确的;Excel连接Access用的是ODBC模式,所以用%作为任意多字符的通配符也是没问题的。

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:46:32