用于逗号分隔文本的 Mysql 正则表达式
Posted
技术标签:
【中文标题】用于逗号分隔文本的 Mysql 正则表达式【英文标题】:Mysql regex for comma delimeted text 【发布时间】: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。
我希望一切都清楚。
提前致谢。
【问题讨论】:
将逗号分隔的值存储在一列中几乎不是一个好主意。如果可以的话,您应该考虑规范化您的表格。 【参考方案1】:由于 MySQL 使用的 POSIX 引擎既不支持 word boundary anchors 也不支持 lookaround assertions),因此您必须使用像这样的正则表达式来作弊
(^|,)5(,|$)
确保匹配 5
仅当被逗号或字符串的开头/结尾包围时。
【讨论】:
太好了,谢谢。它就像一个魅力。我会尽快接受答复。 简洁的参考答案,+1 :)以上是关于用于逗号分隔文本的 Mysql 正则表达式的主要内容,如果未能解决你的问题,请参考以下文章