SQL-запрос с регулярным выражением в базе данных ms-access - PullRequest
0 голосов
/ 07 февраля 2010

Я работаю с C # .Net и базой данных ms-access.

У меня следующий запрос SQL:

  `Select ... Like "%<aaa>%"+prmPhrase+"%</aaa>%"` 

Запрос ищет фразу в поле базы данных, содержащую данные XML.

запрос работает очень быстро, но возвращает много ложных результатов. Я не могу найти только точную фразу, потому что у меня есть список маркеров слов:

  ' ', '-', '.', ':', ',', ';', '/'

например:

  prmPhrase = run  
  "i run home" -ok  
  "i.run-home" - ok  
  "running" - false result - not ok  

У меня уходит много времени, чтобы извлечь правильные результаты с помощью кода и вернуть только правильные предложения.

Я хотел бы знать, есть ли что-то вроде регулярных выражений или что-то, что я мог бы сделать лучше запрос, чтобы вернуть только хорошие результаты без ложных.

может быть, это может помочь:

Поиск "соответствия всего слова" в MySQL

Спасибо за продвижение!

Ответы [ 3 ]

0 голосов
/ 07 февраля 2010
0 голосов
/ 08 февраля 2010

Это мало помогает в SQL, но Access может использовать поддержку RegExp объекта File System. Учитывая то, как хранятся ваши данные, это, скорее всего, не сильно замедлится, так как ваши совпадения LIKE в любом случае не будут использовать какие-либо индексы.

0 голосов
/ 07 февраля 2010

Ваша задача может быть решена с помощью чего-то вроде "%" + SetA + "run" + SetB + "%"
где setA - все символы, разрешенные до фразы (например, [a-z] *, для предотвращения конца тега, поэтому% не работает), setB - все разрешенные разделители (например, [^ a-z0-9]).
Боюсь, вы не можете определить SetA с помощью%, _, [] Так что вам следует упростить вашу задачу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...