REGEXP_LIKE работает не так, как ожидалось (ожидания новичков)

#mysql

#mysql

Вопрос:

Я хочу удалить женщин из мужчин.

Каждый раз, когда я изменяю эту строку:

ГДЕ REGEXP_LIKE(имя,'(мужское)’)

Вставляя ^ или $, чтобы соответствовать только мужским, он возвращает нулевые результаты. Я также попытался добавить ^ в начало.

 SELECT name 
FROM table
WHERE REGEXP_LIKE(name,'(men's)')
AND name LIKE '%shoe%'
LIMIT 5
  
 name
Nike React Vision Men's Shoe - Grey
Nike React Vision Women's Shoe - Grey
Nike React Sertu Men's Shoe - Blue
Nike Revolution 5 FlyEase Men's Running Shoe - Blue
Nike Air Zoom Terra Kiger 6 Women's Trail Running Shoe - Pink
  

Скорее всего, это мои отвратительные навыки работы с MySQL, поэтому любая помощь была бы очень признательна.

Я также попробовал альтернативный синтаксис

 WHERE name REGEXP '^(men's)'
  

Который также возвращает 0 результатов.

Комментарии:

1. Вместо этого вы могли бы попробовать вычислить женщин. Здесь это кажется более надежным подходом. Будет ли это работать для вас?

2. ^ Будет соответствовать начальной позиции любой строки. $ Все наоборот, что означает конец строки. Вы должны попытаться сопоставить Men's с большой буквы M, чтобы избежать сопоставления с женщинами.

Ответ №1:

Я использовал синтаксис RLIKE и границу слова, чтобы отделить женщин от мужчин:

 SELECT name 
FROM products_en
WHERE name RLIKE '\bmen\b' 
AND name LIKE '%shoe%'
LIMIT 50
  

Спасибо