2009-12-10 2 views
1

Вопрос: У меня есть таблица со столбцами ID, имя, Prename, ПочтаВывести имя и псевдоним с адреса электронной почты?

Почта содержит адрес электронной почты человека, например [email protected]

Теперь мне нужно чтобы проверить, есть ли Name = '' или Prename = '' и извлечь «John» из Mail и поместить его в Псевдоним, и поместить «Doe» в столбец. Имя

Могу ли я сделать это с SQL, если да, как?

Я использую MS-SQL 2005

+0

- это имена, которые всегда будут разделены символом «.»? – CSharpAtl

+0

Ниже приведены некоторые ответы, которые помогут вам решить ваш конкретный случай, но, как замечает CSharpAtl, есть, вероятно, гораздо больше, чем это. Адреса электронной почты могут быть во многих, многих форматах и ​​извлечения имени могут быть проблемой. Подумайте о ваших конкретных требованиях здесь. –

ответ

2

Вы можете использовать инструкцию UPDATE следующим образом.

--relies on one and only one dot in the email account! 
UPDATE Customer 
SET PreName = LEFT(Email, CHARINDEX('.',Email)-1) --FirstName 
    ,Name = SUBSTRING(Email,CHARINDEX('.',Email)+1, CHARINDEX('@',Email)-CHARINDEX('.',Email)-1) 

Для проверки этого решения попробуйте использовать одну строку в качестве теста.

--test it out with this script! 
DECLARE @Addr varchar(100) 

SELECT @Addr = '[email protected]' 

DECLARE @DotAt int, @At int 

SELECT @DotAT = CHARINDEX('.',@Addr) 
     ,@At = CHARINDEX('@',@Addr) 

SELECT LEFT(@Addr, @DotAt-1), SUBSTRING(@Addr,@DotAt+1,@[email protected]) 
0

Это возможно. Вам нужно будет немного манипулировать строкой. Проверьте функции SUBSTRING, PATINDEX и CHARINDEX.

Смежные вопросы