Сопоставить текст с шаблонными выражениями в базе данных? - PullRequest
3 голосов
/ 16 февраля 2010

Учитывая входную строку, я хотел бы вернуть строки из базы данных (MySQL), которые содержат шаблонное выражение, которое будет соответствовать строке. Например, если у меня есть таблица, содержащая эти подстановочные выражения:

foo.*
foo.bar.*
erg.foo.*

и моя входная строка - "foo.bar.baz", тогда я должен получить строки "foo. *" И "foo.bar. *".

Есть идеи, как это можно реализовать? Я надеюсь, что это может быть выполнено с помощью запроса, но мне, возможно, придется выбрать все соответствующие строки и выполнить сопоставление в приложении.

1 Ответ

3 голосов
/ 16 февраля 2010
SELECT  *
FROM    mytable
WHERE   'foo.bar.baz' RLIKE match

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

Однако, если вы хотите обрабатывать только символы подстановки звездочек, вы можете использовать этот синтаксис:

SELECT  *
FROM    mytable
WHERE   'foo.bar.baz' LIKE REPLACE(REPLACE(REPLACE(REPLACE('\\', '\\\\'), '.', '\\.'), '%', '\\%'), '*', '%') ESCAPE '\\'
...