#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