如何在SQL中组合REGEXP规则筛选符合前缀、中间词、后缀要求的文件名
MySQL REGEXP多条件整合方案
你可以选择两种写法实现需求:
写法1:合并为单个正则表达式(性能更优)
SELECT * FROM files WHERE file_name REGEXP '^company.*[[:<:]]dog[[:>:]].*xlsx$';
规则说明:
^company匹配以指定前缀单词开头的文件名.*匹配任意数量的任意字符,适配前缀和中间词、中间词和后缀之间的任意内容[[:<:]]dog[[:>:]]匹配完整的独立单词dog,如果不需要限制为完整单词,直接写dog即可xlsx$匹配文件名以xlsx结尾,严格限定后缀
写法2:拆分多条件(可读性更高)
如果不想写复杂的长正则,也可以直接用AND连接你原来的单条件逻辑:
SELECT * FROM files WHERE file_name REGEXP '^company' AND file_name REGEXP 'dog' -- 需要完整单词就改成REGEXP '[[:<:]]dog[[:>:]]' AND file_name REGEXP 'xlsx$';
补充说明:你之前用到的
xlsx[[:>:]]是单词边界匹配,仅能保证xlsx是独立单词,无法保证它在文件名末尾,用xlsx$匹配字符串结尾更符合后缀筛选的需求。
内容的提问来源于stack exchange,提问作者thirddayouthere
相关产品推荐
相关产品推荐

