SUBSTRING com Left e Right

22/05/2018

0

Boa tarde,
alguém poderia me ajudar?
Preciso extrair de um campo o email abaixo exemplo de tabela;
Linha CampoX Nome
1 Meu Nome é michelle meu email é mic@hotmail.com Michelle
2 email é mic@hotmail.com Michelle Penha
Como faço para extrair do CampoX apenas o ''''mic@hotmail.com''''
''''
Michelle Penha

Michelle Penha

Responder

Post mais votado

23/05/2018

crie uma função para retornar o email:

CREATE FUNCTION dbo.fRetEmail(@email VARCHAR(250))
RETURNS VARCHAR(250)
AS BEGIN
	DECLARE @email2 varchar(250)
	DECLARE @arroba int
	DECLARE @espaco int
	DECLARE @posicao int
	SET @email2 = @email
	SET @arroba = CHARINDEX('@', @email2)
	SET @posicao = @arroba
	SET @espaco = CHARINDEX(' ', @email2, @arroba+1)

	IF @espaco > 0
		SET @email2 = LEFT(@email2, @espaco)

	WHILE @posicao > 1
	BEGIN
		IF SUBSTRING(@email2,@posicao,1)=' '
		BEGIN
			SET @email2 = SUBSTRING(@email2,@posicao+1,LEN(@email2))
			SET @posicao = 1
		END
		SET @posicao = @posicao - 1
	END

	IF @email2 IS NULL
		OR @email2 = ''
		OR @email2 NOT LIKE '[0-9a-zA-Z]%@__%.__%' 
		OR @email2 LIKE '%@%@%' 
		OR @email2 LIKE '%..%' 
		OR @email2 LIKE '%.@' 
		OR @email2 LIKE '%@.' 
		OR @email2 LIKE '%@%.-%' 
		OR @email2 LIKE '%@%-.%' 
		OR @email2 LIKE '%@-%' 
		OR CHARINDEX(' ',LTRIM(RTRIM(@email2))) > 0
		SET @email2 = @email2 + ': não parece um email válido'
 
    RETURN LTRIM(RTRIM(@email2))
END


depois você poderá executar na sua instrução:

SELECT Linha, fRetEmail(CampoX) Email, Nome FROM tabela

1 Meu Nome é michelle meu email é mic@hotmail.com Michelle
2 email é mic@hotmail.com Michelle Penha
Como faço para extrair do CampoX apenas o ''''mic@hotmail.com''''

Emerson Nascimento

Emerson Nascimento
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar