【发布时间】:2016-11-23 16:01:41
【问题描述】:
我有一个数据库,其中存储了一个代码,该代码是各种代码的 implode("|", $array)。所以结果会是这样的:
- 100|5100|510
- 100|5200|510
- 410|5200|520
- 100|790|5100|320
我想编写一个正则表达式来搜索 mySQL 以查找来自 PHP 的匹配项...我可能有类似 100|*|510 的内容来显示 100|5100|510 和 100|5200|510。这个正则表达式在 PHP 中工作:
/100\|(?:.*)\|510/
但它在 mySQL 中不起作用。我找到了 ?: 不起作用的答案,所以如果我删除它并使用
/100\|.*\|510/
即查询是: SELECT * FROM tra_amounts WHERE coa_codes REGEXP "/100\|.*\|510/"
它显示了表格中的所有结果。
如何编写正则表达式来匹配代码的某些部分,同时将代码的其他部分保留为通配符?
谢谢!
【问题讨论】:
-
你可以做
100\|[0-9]+\|510,这将允许中间的任何数字。在您的示例中,100|790|5100|320不应该匹配吗?