REGEXP не работает для '(апостроф) и - (тире) в MySQL

0

Я использую REGEXP для поиска в БД MySQL, но он не возвращает правильные данные, когда я вставляю ' (апостроф) и - (тире) в поисковый запрос.

Есть ли какое-либо решение для этого?

Вот полный запрос:

select * from table where  (field REGEXP 'SAN DIEGO | SAN DIEGO |^SAN DIEGO' or field2 REGEXP 'SAN DIEGO | SAN DIEGO |^SAN DIEGO' )
  • 0
    Можете ли вы сказать нам RegExp, который вы используете?
  • 0
    не могу понять, что ру пытается сказать?
Показать ещё 2 комментария
Теги:

2 ответа

1

Если ваши строковые разделители REGEXP являются одинарными кавычками, избегайте их в строке. Кроме того, в зависимости от вашей бизнес-логики и структуры таблицы вы можете сделать CONCAT для уплотнения оператора:

SELECT field1, field2 
WHERE  CONCAT( field1, field2 ) REGEXP 'Mary\ Restaurant'

Если вы используете тире внутри класса символов, либо избегайте его, либо делаете его первым элементом в классе, поэтому движок не считает, что вы пытаетесь указать диапазон:

 ... REGEXP 'Mary\'s[- _]Restaurant'

Если вы используете пример Сан-Диего, вы можете уменьшить REGEXP, используя границы слов:

SELECT field1, field2 
WHERE  CONCAT( field1, field2 ) REGEXP '[[:<:]]SAN DIEGO[[:>:]]'

Смотрите: MySQL 5.1 Руководство REGEXP

0

Вы помещали символы в квадратные скобки? Попробуйте что-то вроде этого:

select * from Table where Field regexp '[\'-]'
  • 0
    не могли бы вы объяснить, где я должен поставить эти скобки? мой регулярное выражение ссылка этот текст REGEXP '| текст | ^ текст '
  • 0
    если в приведенном выше тексте комментария содержится 'или - он не будет работать
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню