【问题标题】:Mysql regex for comma delimeted text用于逗号分隔文本的 Mysql 正则表达式
【发布时间】:2014-06-23 14:07:41
【问题描述】:

我对存储在数据库中的逗号分隔文本有一点问题。我有一个像 "12,5,45" 这样的字符串,我想使用 mysql 的正则表达式函数匹配 5:

agents REGEXP 'some regex here'

我怎样才能做到这一点?

我以 \5+(,\s*5+)\ 或 (?:(5)*.)?5+\ 之类的正则表达式结尾,但它也匹配 "12,45" 或 "15, 1"。我需要正则表达式,它将完全匹配字符串中的 5,例如:

“5”、“1,3,5”、“64,5”

不是

“45,12”、“1,50”。

5 是一个元素的 ID,所以我也不能匹配 15 或 45。

我希望一切都清楚。

提前致谢。

【问题讨论】:

  • 将逗号分隔的值存储在一列中几乎不是一个好主意。如果可以的话,您应该考虑规范化您的表格。

标签: mysql regex comma


【解决方案1】:

由于 MySQL 使用的 POSIX 引擎既不支持 word boundary anchors 也不支持 lookaround assertions),因此您必须使用像这样的正则表达式来作弊

(^|,)5(,|$)

确保匹配 5 仅当被逗号或字符串的开头/结尾包围时。

【讨论】:

  • 太好了,谢谢。它就像一个魅力。我会尽快接受答复。
  • 简洁的参考答案,+1 :)
猜你喜欢
  • 2017-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多