quinta-feira, 3 de novembro de 2011

Como retirar espaços em branco em SQL?

Como retirar espaços em branco em SQL - Papo SQL
Para evitar que o banco de dados contenha ou receba novas informações com espaços em branco, você pode fazer o uso das funções TRIM, LTRIM e RTRIM.

Vejamos o que cada uma faz.

Conceitos Básicos


Trim: Retira/remove todos os espaços em branco independente da posição (Esquerda ou Direita).
Ltrim: Retira/remove todos os espaços em branco que estão à esquerda do campo desejado.
Rtrim: Retira/remove todos os espaços em branco que estão à direita do campo desejado.


Exemplos


1 - Como retirar os espaços em branco excedentes do seguinte texto:

'  Papo Sql - Retirando espaços em Branco  '
 Select Trim(' Papo Sql - Retirando espaços em Branco ');  
 Results  
 'Papo Sql - Retirando espaços em Branco'  

Percebam que, os espaços que haviam à direita e esquerda foram removidos, vejamos a próxima situação.

2 - Como retirar os espaços em branco excedentes do seguinte texto:

'  Papo Sql - Retirando espaços em Branco à esquerda de um campo  '
 Select LTrim('  Papo Sql - Retirando espaços em Branco a esquerda de um campo  ');  
 Results  
 'Papo Sql - Retirando espaços em Branco a esquerda de um campo   '  

Neste caso, ainda temos espaços à direita, porém, a função cumpriu com o proposto, retirar os espaços à esquerda, agora:

3 - Como retirar os espaços em branco excedentes do seguinte texto:

'  Papo Sql - Retirando espaços em Branco à direita de um campo  '
 Select RTrim(' Papo Sql - Retirando espaços em Branco a direita de um campo '); 
 Results  
 ' Papo Sql - Retirando espaços em Branco a direita de um campo'  

Desta vez, temos o inverso da situação anterior, retirando os espaços à direita.

Voltando ao assunto inicial desta matéria, quando você for inserir as informações no banco de dados, utilize as funções, evitando assim que os campos do tipo texto tenha espaços desnecessários.

Agora, quando o banco já contiver espaços em branco, a eliminação deve ocorrer com o uso do Update, utilizando o Trim, Ltrim ou o Rtrim, dependendo da sua situação, vejamos o exemplo:

 Update tabela  
 Set nome = Trim(nome);  

Neste exemplo retiramos todos os espaços à direita e esquerda da coluna nome.

Espero ter lhe auxiliando, no entanto se ficou alguma dúvida, ou quer relatar alguma situação relacionada ao caso, comente abaixo.

Um grande abraço a todos, e até a próxima.

12 comentários:

  1. Boa.
    Mas só dá pra fazer consulta e update em campos já registrados ou tem como configurar pra ele converter espaços extra em um único caractere de espaço?
    Ou isso á é uma questão de interface do formulário? Uma string de javascript sei lá.

    Bom blog =)

    ResponderExcluir
  2. Olá hlidskialf,

    Poderá haver uma verificação no seu formulário antes de inserir os dados no banco, retirando todos os espaços desnecessários. Outra forma seria a utilização dos comandos acima citados no momento da inserção.

    Um grande abraço.

    ResponderExcluir
  3. bom dia,
    tenho um problema parecido,tenho um campo que era um DATE yyy-mm-dd,tinha que atualizar o banco para tirar esses "-" da data,transformei o campo em varchar e consegui tirar,mas o problema é que ficou os espaços em branco yyyy mm dd como faço pra fazer um update para remover esses espaços em branco????

    ResponderExcluir
    Respostas
    1. Caro Diego,

      Você pode fazer o seguinte:

      Update suatabela
      Set seucampo = replace(seucampo,' ','')
      Where ...

      Com a instrução acima, você conseguirá retirar os espaços indesejáveis.

      Espero ter lhe sido útil, grande abraço.

      Excluir
  4. Respostas
    1. Olá Valdir, fico feliz por ter ajudado.

      Grande abraço.

      Excluir
  5. Como retirar os ENTER (CHR(10)) do final de um texto?

    ResponderExcluir
    Respostas
    1. Olá Oscar.

      Você pode usar:

      update TABELA
      set CAMPO = mid(CAMPO,1,length(CAMPO)-1)
      where ascii(mid(CAMPO,length(CAMPO),1)) = 13;

      No exemplo, retiramos o enter existente no final do campo. Além do 13, pode existir o 10.

      Abraços.

      Excluir
  6. boa tarde, preciso criar um job para pesquisar os fornecedores que tenham espaço depois do nome da cidade exemplo 'recife '

    qual seria a sintaxe do rtrim no update?

    grato

    ResponderExcluir
    Respostas
    1. observação: pesquisar e corrigir hehe

      Excluir
    2. Sorriso, para localizar:

      Select * From SUA_TABELA
      where ascii(mid(CIDADE,length(CIDADE),1)) = 32

      O Select acima irá localizar os registros em que o último caracter é um espaço.

      Para corrigir, ou seja, retirar os espaços:

      update TABELA
      set CIDADE = trim(CIDADE)
      where ascii(mid(CIDADE,length(CIDADE),1)) = 32

      O where seria só para pegar os registros com espaços no final.

      Espero ter ajudado, grande abraço.

      Excluir