POSIX(MySQL RLIKE)Regex匹配A|B|C但排除D|E|F

lc8prwob  于 2023-04-22  发布在  Mysql
关注(0)|答案(1)|浏览(127)

我在WindowsXAMPP测试平台上有一个完全可用的版本(PHP)

SELECT... ...WHERE itemTitle RLIKE '(?=.*A)+(?=.*B)+(?=.*C)+^((?!D|E|F).)*$'

当我将站点移动到一个真实的服务器上时,它停止工作,并出现错误“重复操作符操作数无效”。
研究表明,基于UNIX的服务器只支持更基本的RegEx,不允许向前看或向后看。
六个小时+的搜索和测试在我的本地网站和真实的的服务器导致没有解决方案对我自己。
为了澄清,我需要(MySQL)返回有多个匹配字符串的记录(在给定的列中),但消除那些匹配字符串的秒集......不使用任何重复操作符!

taor4pac

taor4pac1#

根据您当前的标题,这应该可以正常工作,并且有些效率:

WHERE itemTitle     RLIKE '[ABC]'
  AND itemTitle NOT RLIKE '[DEF]'

假设测试是针对单个字母的,不需要锚定,等等。

相关问题