У меня есть эта таблица с полем, называемым nombre
и marca_temp
nombre
записей может быть:
IMPRESORA HP XXXXX
IMPRESORA MP YYYYY
IMPRESORA AMP ZZZZZ
MP IMPRESORA RRRRR
IMPRESORA 3500 MP
IMPRESORA 5200 HP
И у меня есть это update
, которое ищет в nombre
слово и установить его в поле marca_temp
tep_db_query("update " . TABLE . " set marca_temp = 'MP' where nombre like '%MP%' and marca_temp = '' ");
tep_db_query("update " . TABLE . " set marca_temp = 'HP' where nombre like '%HP%' and marca_temp = '' ");
tep_db_query("update " . TABLE . " set marca_temp = 'AMP' where nombre like '%AMP%' and marca_temp = '' ");
Но у меня есть проблема, мне нужно слово в запросе, чтобы быть точным, потому что, например, все они содержат MP по слову I MP RESORA и установите меня в marca_temp
все в MP
Как сделать поле точным и полным словом ?
PodrГ-схвати использовать REGEXP
и закладки lГ-mite слов ([[:<:]] y [[:>:]]
)
UPDATE $table
SET marca_temp = '$word'
WHERE nombre REGEXP '[[:<:]]$word[[:>:]]'
AND marca_temp = ''
Замечает: заменять $table
и $word
, Примененные к тебе cГіdigo:
$word = 'MP';
$table = TABLE;
tep_db_query("update $table set marca_temp = '$word' where nombre REGEXP '[[:<:]]$word[[:>:]]' and marca_temp = ''");
% внутри твоей статьи LIKE
на обоих концах слова, чтобы искать, значат, что будет искать тебя равенство независимо, откуда эта он случился.
AprovechГЎndote этого podrГ-схвати делать что-то как:
tep_db_query("update " . TABLE . " set marca_temp = 'MP' where nombre like '% MP %' and marca_temp = '' ");
tep_db_query("update " . TABLE . " set marca_temp = 'HP' where nombre like '% HP %' and marca_temp = '' ");
tep_db_query("update " . TABLE . " set marca_temp = 'AMP' where nombre like '% AMP %' and marca_temp = '' ");
В aГ±adir место впереди и detrГЎs равенства deberГ-схвати добиваться того, чтобы update
только он случился, когда искавшее слово - та, которая появляется в способе твоего поля nombre
.
OR
, чтобы созерцать эти возможности: '% MP %'
, 'MP %'
, '% MP'
.
– phpMyGuel
28.11.2019, 16:10