none
charindex RRS feed

  • Pergunta



  • estou com um probleminha,
    estou com uma base de emails, e preciso saber o email da pessoa em um campo chamado corpo que é o corpo do e-mail.

    como usar o charindex para descobrir apenas o email exato da pessoa?
    o campo está como um monte de coisas dizendo que o email nao pode ser enviado e  o endereco de  email que nao pode ser enviado, preciso que me retorne apenas esse email que nao pode ser enviado, nao pode ser o campo inteiro.
    sei que preciso dar um charindex,

    where corpo like '@' alguma coisa...rs..como faço?

    att,

    Ricardo Almeida
    segunda-feira, 21 de janeiro de 2008 17:47

Respostas

  • Ricardo, o CharIndex retorna a posição inicial de uma expressão, não vai encontrar a frase exata no texto.

     

    Code Block

    Exemplo: SELECT CHARINDEX ('Teste', campo) From tabela

     

     

     

    Entendeu?

     

    Abraços,

    segunda-feira, 21 de janeiro de 2008 17:55

Todas as Respostas

  • Ricardo, o CharIndex retorna a posição inicial de uma expressão, não vai encontrar a frase exata no texto.

     

    Code Block

    Exemplo: SELECT CHARINDEX ('Teste', campo) From tabela

     

     

     

    Entendeu?

     

    Abraços,

    segunda-feira, 21 de janeiro de 2008 17:55

  • Muito Obrigado Rodrigo.
    segunda-feira, 21 de janeiro de 2008 17:59
  • Olá Ricardo,

     

    Veja se o código abaixo o ajuda:

     

    Code Block

    DECLARE @texto VARCHAR(1000), @TextoRev VARCHAR(1000)

    SET @texto = 'asdkasfn #sdfn, $ asdknas, &¨$%¨$%¨asdTRG suemail@conta.com.br askdas,n$% t4rnçwrefmç'

    SET @TextoRev = REVERSE(@texto)

    DECLARE @posArroba INT

    SET @posArroba = (SELECT CHARINDEX('@',@texto))

    DECLARE @posEspacoFimEmail INT

    SET @posEspacoFimEmail = (SELECT CHARINDEX(' ',@texto, @posArroba))

    DECLARE @posArrobaRev INT

    SET @posArrobaRev = (SELECT CHARINDEX('@',@textoRev))

    DECLARE @posEspacoInicioEmail INT

    SET @posEspacoInicioEmail = LEN(@Texto) - (SELECT CHARINDEX(' ',@textoRev, @posArrobaRev))

    SELECT SUBSTRING(@Texto,@posEspacoInicioEmail+2,@posEspacoFimEmail-@posEspacoInicioEmail-2)

     

     

    [ ]s,

     

    Gustavo

     

    segunda-feira, 21 de janeiro de 2008 18:06
  • veja o patindex nele vc.  pode passar uma instrucao igual a do like. e ele tambem retorna a posicao do caracter.

     

     

     

    Abs;

     

    segunda-feira, 21 de janeiro de 2008 18:16
  • Ricardo,

     

    Você pode também combinar o uso do CharIndex com o PatIndex, veja abaixo o exemplo:

     

    Code Block

    Declare @Email VarChar(25),

    @Dominio Varchar(10),

    @TamanhoDominio SmallInt

     

    Set @Email='jnio@ltex.com.br'

    Set @TamanhoDominio=(Select PatIndex('%@%',@Email))

     

    Select @Dominio=Substring(@Email,PatIndex('%@%',@Email),CharIndex('.',@Email)-@TamanhoDominio)

     

    If @TamanhoDominio >=2

     Print 'Domínio: '+@Dominio+' é válido'

    Else

     Print 'Domínio: '+@Dominio+' inválido'

     

     

    segunda-feira, 21 de janeiro de 2008 18:47