Найти строку в поле - PullRequest
       6

Найти строку в поле

0 голосов
/ 17 ноября 2010

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

Следующее будет точно найдено только совпадение

SELECT mycontact, userid
FROM mytable
WHERE email = #form.email#'

Следующее вернет результат, если поле email содержитв форме .email

 SELECT mycontact, userid
 FROM mytable
 WHERE email like '%#form.email#%'

Но это не даст того, что я хочу.Я хочу обратное из вышеперечисленного.Поле электронной почты может содержать более одного адреса электронной почты.Я хочу иметь возможность ввести значение, например, form.email, выполнить поиск в таблице и найти любую запись в поле «электронная почта», которая содержит form.emal.% LIKE% не будет работать, потому что я не хочу получить более одного.Если кто-то введет cd@gmail.com, я не хочу получать abcd@gmail.com, bcd@gmail.com и т. Д. Это сложная часть.Помощь приветствуется.Я использую базу данных MYSQL.Спасибо.

Ответы [ 3 ]

2 голосов
/ 17 ноября 2010

Вам нужно изменить дизайн своей схемы, так как наличие списка электронных писем в столбце - очень, очень плохой дизайн, и SQL не очень хорошо справляется с этим (как вы уже столкнулись).Лучше было бы таблицу email, где каждая contact может иметь одну или несколько строк на основе адресов электронной почты, которые они предоставляют.

Поверьте мне, это будет работать лучше и сделает вашу жизнь намного проще.Редизайн сейчас.

0 голосов
/ 17 ноября 2010

Если вы храните более одного электронного письма в поле, вы должны добавить разделитель, например пробел или пробел.Вы можете сделать

SELECT mycontact, userid FROM mytable WHERE email like '%#form.email#%'

, затем взорвать разделитель и зациклить в массиве.Сравните каждое письмо, используя pregmatch.Но я бы порекомендовал вам использовать отдельную таблицу для этого, как они сказали выше.Я бы полностью с ними согласился.

0 голосов
/ 17 ноября 2010

Попробуйте регулярное выражение n для выбора.

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