我有一个注释列,其中包含文本,并在文本中有一个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”。
非常感谢。
答案 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']})%'