[英]MySQL REGEXP (problem with params order)
查询:
SELECT * FROM (test) test_label WHERE REGEXP "AA(.*)BB" OR test_label REGEXP "BB(.*)AA"**
数据库(字符串):
1. AA BB 100
2. AA BB 200
3. BB AA 300
4. BB CC 100
5. AA CC 300
该查询返回行:1、2和3。
怎么样:
将此表达式组合为一个表达式(但是-我希望使用一个REGEXP而不使用OR-如果可能的话,它一定不能采用输入var的顺序,而且我不必搜索所有可能的组合)
现在,如果查询为“ AA BB”,我必须找到所有可能的情况-在这种情况下,仅是:
但是,如果查询为“ AA BB CC”,则情况更多。
测试用例:
AA(.*)BB|BB(.*)AA
应该做,尽管我不明白为什么您要捕获AA和BB之间的空间,所以AA.*BB|BB.*AA
也可以工作。
如果可能的字符串数量增加,则取决于您要允许哪些有效匹配。 如果您想要“真实的”组合,即列表中的所有三个元素(如AA, BB, CC
必须以任意顺序精确地出现一次,则MySQL(使用POSIX ERE引擎,因此未实现反向引用)使您无奈但要说明所有可能的组合:
AA.*BB.*CC|AA.*CC.*BB|BB.*AA.*CC|BB.*CC.*AA|CC.*AA.*BB|CC.*BB.*AA
等等以获得更多元素。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.