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

0

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

Ниже будет найдено точное совпадение

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

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

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

Но это не даст того, что я хочу. Я хочу обратить вспять вышеизложенное. Поле электронной почты может содержать более одного адреса электронной почты. Я хочу иметь возможность вводить значение, то есть form.email и искать таблицу и находить любую запись в поле "email", которое содержит form.emal. % LIKE% не будет работать, потому что я не хочу получать более одного. Если кто-то вводит [email protected], я не хочу получать [email protected], [email protected] и т.д. Это сложная часть. Помощь приветствуется. Я использую базу данных MYSQL. Спасибо.

  • 0
    Я согласен с Донни ниже, НО, если вы не собираетесь разделять адреса электронной почты на строки, как вы разделяете их, когда у вас есть кратные?
  • 0
    Извините, мне не совсем понятно, как вы храните несколько писем в одном поле. Можете ли вы привести пример?
Теги:
string

3 ответа

2

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

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

0

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

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

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

0

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

Ещё вопросы

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