Как я могу выполнить проверку SQL-запроса, является ли имя пользователя частью электронной почты?

#sql

#sql

Вопрос:

Итак, я хочу выбрать всех пользователей, имя пользователя которых содержится в электронном письме

например, в этой таблице username — email

 mee - mee@unknown.com
mee2 - kle@unknown.com
mee3 - mee3@unknown.com
jft - jft@unknown.com
uey - uey@unknown.com
  

Я хочу возвращать только mee, mee3, jft и uey, где имя пользователя содержится в электронном письме — теперь, как мне это сделать?

Я мог бы использовать решение Брайана Гувера, но на самом деле я выбрал следующее предложение where

 where email = CONCAT(`username`, '@unregistered.com')
  

Ответ №1:

 select username, substring(email, 1, locate('@', email)- 1) from usertable
where lower(username) = lower(substring(email, 1, locate('@', email)- 1));
  

Это даст вам каждое электронное письмо, в котором имя пользователя и начало электронного письма совпадают

Комментарии:

1. о, извините — я не знаю, это случайно, все, что я знаю, это то, что электронное письмо закончится на @unknown.com

2. Итак, что вы знаете заранее? Вы просто пытаетесь удалить символы после @?

3. да, я просто хочу сравнить символы перед @unknown.com с именем пользователя.

4. Но это то, что даст вам запрос, который я написал. Вы просто заменяете ‘mee @%’ на то, какое имя пользователя вы ищете. Итак, если вы искали mee3, вы бы использовали select * из таблицы email, где email типа ‘mee3 @%’

5. да, но я ищу всех пользователей, у которых имена пользователей равны их электронной почте

Ответ №2:

Если вы используете MS SQL Server, для получения первой части электронной почты используйте

 SELECT SUBSTRING(email, 0, CHARINDEX('@', email)) FROM EmailTable