Mysql REGEXP, как сделать точное совпадение - PullRequest
3 голосов
/ 22 июня 2010

У меня есть столбец заметок, который содержит текст и имеет идентификатор в тексте, что-то вроде «какой-то случайный текст (actvityid - 1234)»

В этом случае мне нужно извлечь идентификатор 1234 и обновитьстолбец Activityid в той же таблице.

мой запрос выглядит следующим образом

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

проблема в том, что если $ f ['activityId'] равен 34 или 123, например, он все еще обновляетсястолбец активности с этим значением.Как я могу сделать точное совпадение с "1234" и обновить только если оно соответствует всей строке, здесь "1234".

Большое спасибо.

Ответы [ 2 ]

5 голосов
/ 22 июня 2010
WHERE notes REGEXP CONCAT('(actvityid - ', {$f['activityId']}, ')')

или

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

[[:<:]] и [[:>:]] обозначает границы слова .

1 голос
/ 22 июня 2010

Нет необходимости использовать CONCAT, если переменная передается из PHP, и нет необходимости использовать REGEXP, если вы сопоставляете точную строку без специальных символов

WHERE notes LIKE '%(actvityid - {$f['activityId']})%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...