none
Como pegar o último caracter de uma String? RRS feed

  • Pergunta

  • Boa tarde,

    Tenho hoje o campo CompanyName (o qual leva nome de clientes cadastrados em uma tabela)
    Devido a falhas na aplicação e uma má operação do sistema, alguns clientes estão cadastrados com ' ' (um espaço em branco antes e/ou depois do nome)

    Exemplo de um SELECT na tabela de clientes
    ' Empresa1'
    'Empresa2 '

    A dúvida é, como identificar o primeirou ou último campo de uma string?? Seja ele um ' ' ou qualquer outro caracter?

    Obrigado!


    DBA Vini
    • Tipo Alterado Gustavo Maia Aguiar segunda-feira, 2 de agosto de 2010 16:51 É uma pergunta e não uma discussão
    segunda-feira, 2 de agosto de 2010 16:48

Respostas

  • Vinicius,

    Imagino que vc queira atualizar estes campos, sendo assim precisa se ter atencao para nomes e sobrenomes, neste caso vc nao pode excluir o espaço, o script abaixo poderá ajudá-lo

    declare @tbTeste as table (nmTeste varchar(20))
    insert into @tbTeste values(' Marcelo')
    insert into @tbTeste values('Fernandes ')
    insert into @tbTeste values('Camila Fernandes')
    
    update @tbTeste set nmTeste = replace(nmTeste, ' ','') where PATINDEX('% %',nmTeste)=1 or PATINDEX('% %',reverse(nmTeste)) = 1
    
    select * from @tbTeste
    
    

    att.

    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba
    • Marcado como Resposta Vinicius Allil segunda-feira, 2 de agosto de 2010 18:13
    segunda-feira, 2 de agosto de 2010 17:28
    Moderador
  • Tu pode dar um update na tabela:

    Update <tabela> set <coluna> = rtrim(ltrim(coluna))

     

    Se tu qr apenas listar os registros com espaço tenta o charindex ou len(substring(<params>)) > 0...

     

    Abraço


    Gabriel Bauermann | Representante New Art Webdesing Criação e manutenção de Web Sites Fone (51) 8182 6819 | Email: gabriel.bauermann@gmail.com
    • Marcado como Resposta Vinicius Allil segunda-feira, 2 de agosto de 2010 18:13
    segunda-feira, 2 de agosto de 2010 17:01

Todas as Respostas

  • De uma olhada neste link:

     

    http://www.tsqlmaster.net/2009/04/removendo-espacos-em-branco-de-um-campo.html

     

    Acho que resolva seu problema:

     

    DECLARE @STRING VARCHAR(50)
    
    SET @STRING = '  ESPAÇO ANTES'
    SELECT LTRIM(@STRING),@STRING
    
    SET @STRING = 'ESPAÇO DEPOIS '
    SELECT RTRIM(@STRING),@STRING
    
    SET @STRING = '  ESPAÇO ANTES/DEPOIS '
    SELECT LTRIM(RTRIM(@STRING)),@STRING
    

    Rafael Zaccanini

    Se a resposta de ajudou marque como útil


    • Sugerido como Resposta Oda Rob terça-feira, 3 de agosto de 2010 00:50
    segunda-feira, 2 de agosto de 2010 16:58
  • Tu pode dar um update na tabela:

    Update <tabela> set <coluna> = rtrim(ltrim(coluna))

     

    Se tu qr apenas listar os registros com espaço tenta o charindex ou len(substring(<params>)) > 0...

     

    Abraço


    Gabriel Bauermann | Representante New Art Webdesing Criação e manutenção de Web Sites Fone (51) 8182 6819 | Email: gabriel.bauermann@gmail.com
    • Marcado como Resposta Vinicius Allil segunda-feira, 2 de agosto de 2010 18:13
    segunda-feira, 2 de agosto de 2010 17:01
  • Vinicius,

    Imagino que vc queira atualizar estes campos, sendo assim precisa se ter atencao para nomes e sobrenomes, neste caso vc nao pode excluir o espaço, o script abaixo poderá ajudá-lo

    declare @tbTeste as table (nmTeste varchar(20))
    insert into @tbTeste values(' Marcelo')
    insert into @tbTeste values('Fernandes ')
    insert into @tbTeste values('Camila Fernandes')
    
    update @tbTeste set nmTeste = replace(nmTeste, ' ','') where PATINDEX('% %',nmTeste)=1 or PATINDEX('% %',reverse(nmTeste)) = 1
    
    select * from @tbTeste
    
    

    att.

    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba
    • Marcado como Resposta Vinicius Allil segunda-feira, 2 de agosto de 2010 18:13
    segunda-feira, 2 de agosto de 2010 17:28
    Moderador
  • Pra atualizar basta:

    Update <tabela> set <colunaTal> = rtrim(ltrim(<colunaTal>))


    Gabriel Bauermann | Representante New Art Webdesing Criação e manutenção de Web Sites Fone (51) 8182 6819 | Email: gabriel.bauermann@gmail.com
    segunda-feira, 2 de agosto de 2010 17:34
  • Vinícius,

    Acredito que as soluções propostas pelo colegas acima resolvería perfeitamente seu problema. Mas devido ao título do seu tópico eu gostaría de postar esse exemplo para pegar a primeira e a ultima posição de uma dada string...

     

    declare
    

    @tabela table
    (string varchar
    (100))

    insert
    into
    @tabela (string) values
    ('Rafael'
    )
    insert
    into
    @tabela (string) values
    ('mELO'
    )
    insert
    into
    @tabela (string) values
    ('x Rafael 99'
    )
    insert
    into
    @tabela (string) values
    (' Rafael '
    )
    insert
    into
    @tabela (string) values
    (' melo'
    )

    select

    left
    (string,1 ) as
    'primeiro posicao da string (esquerda->direita)'
    ,
    right
    (string,1) as
    'primeiro posicao da string (direita->esquerda)'

    from
    @tabela

     

    atenciosamente,

    Rafael

     

    segunda-feira, 2 de agosto de 2010 17:50
  • Isto me resolve de imediato!
    Obrigado!
    DBA Vini
    segunda-feira, 2 de agosto de 2010 18:13