Помощь с предложением MySQL SELECT WHERE

0

Столбец в моей таблице содержит адреса электронной почты.

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

Аргумент поиска текстовой строки: "bob, sally, steve"

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

Таким образом, строка с [email protected] не будет возвращена, но [email protected] будет.

Кто-нибудь имеет образец предложения WHERE, который производит этот результат?

Спасибо.

  • 1
    А как насчет [email protected]?email.com?
  • 0
    @OMG Пони: Оооооооооооочень хороший! ;)
Теги:

3 ответа

1
Лучший ответ

Может быть что-то вроде

WHERE email like '%bob%' or email like '%sally%' or email like '%steve%'

Обратите внимание, что это также будет соответствовать [email protected]. Если вы хотите только совместить стартовые символы, просто опустите ведущий %:

WHERE email like 'bob%' or email like 'sally%' or email like 'steve%'

Если вы хотите быть более ограничительным, вы можете попробовать:

WHERE email like 'bob@%.com' or email like 'sally@%.com' or email like 'steve@%.com'

Кроме того, прочитайте в LIKE оператор и регулярные выражения (вам не нужно это здесь, но вы, вероятно, в конечном итоге это нужно).

  • 0
    круто FWFD ... я попробую и опубликую свои результаты
  • 0
    Я хотел его только для адресов, начинающихся с имени пользователя, поэтому я пропустил начальный% для своего теста, и это сработало. Благодарю.
0

Следующий оператор выберет любые строки в столбце "email", где адрес начинается с "bob @". Вы бы заменили "bob" на имя пользователя, которое вы пытаетесь сопоставить.

SELECT * FROM table_name WHERE email REGEXP "^bob@"
  • 0
    Я тоже попробую
  • 0
    Нет, не работает ... REGEXP "^ bob @" ИЛИ REGEXP "^ sally @" ИЛИ REGEXP "^ Стив @" - строки не возвращаются
Показать ещё 3 комментария
0

Это будет работать для вас, но я думаю, что он будет очень медленным

WHERE SUBSTRING(email, 1, (LOCATE('@', email) - 1)) in ('steve', 'smith', .... )

Ещё вопросы

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