Mysql REGEXP如何做到完全匹配

时间:2010-06-22 10:42:13

标签: mysql regex

我有一个注释列,其中包含文本,并在文本中有一个id,类似于 “一些随机文本(actvityid - 1234)”

我需要在这种情况下提取id 1234并更新同一个表中的activityid列。

我的查询看起来像这样

"UPDATE table_name SET activityId = {$f['activityId']} WHERE notes REGEXP '{$f['activityId']}' "

这个问题是如果$ f ['activityId']是34或123,例如它仍然用该值更新activityid列。如何在“1234”上进行完全匹配,只有在匹配整个字符串时才更新,此处为“1234”。

非常感谢。

2 个答案:

答案 0 :(得分:5)

WHERE notes REGEXP CONCAT('(actvityid - ', {$f['activityId']}, ')')

WHERE notes REGEXP '[[:<:]]{$f['activityId']}[[:>:]]'

[[:<:]][[:>:]]代表word boundaries

答案 1 :(得分:1)

如果从PHP传递变量,则无需使用CONCAT, 如果匹配没有特殊字符的完全字符串,则无需使用REGEXP

WHERE notes LIKE '%(actvityid - {$f['activityId']})%'