【问题标题】:mySql regular expression in WHERE statementWHERE语句中的mySql正则表达式
【发布时间】: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 不应该匹配吗?

标签: php mysql regex wildcard


【解决方案1】:

您听说过 MySQL 的 LIKE 运算符吗?您可能会想到这样的事情:

SELECT *
FROM yourTable
WHERE someCol LIKE '100|%|510;

假设someCol100|5100|510100|5200|510 作为数据,此查询将返回这两条记录。

【讨论】:

    【解决方案2】:

    使用RLIKE 代替LIKE=

    【讨论】:

      猜你喜欢
      • 2017-03-23
      • 1970-01-01
      • 2019-09-18
      • 1970-01-01
      • 1970-01-01
      • 2011-05-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-07
      相关资源
      最近更新 更多