Eu tenho uma tabela com dois campos (países e códigos ISO):
Table1
field1 - e.g. 'Afghanistan' (without quotes)
field2 - e.g. 'AF'(without quotes)
Em algumas linhas, o segundo campo possui espaços em branco no início e / ou no final, o que está afetando as consultas.
Table1
field1 - e.g. 'Afghanistan' (without quotes)
field2 - e.g. ' AF' (without quotes but with that space in front)
Existe uma maneira (no SQL) de percorrer a tabela e encontrar / substituir o espaço em branco no campo2?
Respostas:
Você está procurando TRIM .
fonte
Uma resposta geral que eu compus a partir de suas respostas e de outros links e funcionou para mim e escrevi em um comentário é:
etc.
Como o trim () não remove todos os espaços em branco, é melhor substituir todos os espaços em branco que você deseja e do que apará-los.
Espero poder ajudá-lo a compartilhar minha resposta :)
fonte
Por favor, entenda o caso de uso antes de usar esta solução:
aparar não funciona durante a consulta de seleção
Isso funciona
Enquanto isso não
fonte
TRIM()
funciona bem para mim em umaSELECT
declaração, estou realmente curioso para saber por que essa resposta tem tantos votos positivos. Você está usando mysql? Qual versão?SELECT CONCAT('"', TRIM(" hello world "), '"') AS `trimmed value` FROM DUAL
fornece a saída desejada"hello world"
. Enquanto a variante de substituição remove perigosamente o espaço como separador de palavras:SELECT CONCAT('"', REPLACE(" hello world ", ' ', '')) AS `replaced value` FROM DUAL
fornece a saída indesejada"helloworld"
Só para esclarecer, o TRIM, por padrão, remove apenas os espaços (nem todos os espaços em branco). Aqui está o documento: http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_trim
fonte
Parece que nenhuma das respostas atuais removerá 100% do espaço em branco do início e do fim de uma string.
Como mencionado em outras postagens, o padrão
TRIM
apenas remove espaços - não guias, formulários etc. Uma combinação deTRIM
s especificando outros caracteres de espaço em branco pode fornecer uma melhoria limitada, por exemploTRIM(BOTH '\r' FROM TRIM(BOTH '\n' FROM TRIM(BOTH '\f' FROM TRIM(BOTH '\t' FROM TRIM(txt)))))
. Mas o problema dessa abordagem é que apenas um caractere pode ser especificado para um determinadoTRIM
e esses caracteres são removidos apenas do início e do fim. Portanto, se a string que está sendo cortada for algo como\t \t \t \t
(ou seja, espaços alternativos e caracteres de tabulação), maisTRIM
s seriam necessários - e, no caso geral, isso pode continuar indefinidamente.Para uma solução leve, deve ser possível escrever uma UDF (Função Definida pelo Usuário) simples para executar o trabalho fazendo um loop entre os caracteres no início e no final de uma sequência. Mas não vou fazer isso ... como já escrevi um substituto de expressão regular um pouco mais pesado, que também pode fazer o trabalho - e pode ser útil por outros motivos, conforme descrito nesta postagem do blog .
Demo
Demonstração online do Rextester . Em particular, a última linha mostra os outros métodos com falha, mas o método de expressão regular foi bem-sucedido.
Função :
Uso:
fonte
Esta declaração removerá e atualizará o conteúdo do campo do seu banco de dados
Para remover espaços em branco no lado esquerdo do valor do campo
Tabela UPDATE SET field1 = LTRIM (campo1);
ex. UPDATE, membro SET firstName = LTRIM (firstName);
Para remover espaços em branco no lado direito do valor do campo
Tabela UPDATE SETfield1 = RTRIM (campo1);
ex. UPDATE membro SET firstName = RTRIM (firstName);
fonte
Eu precisava aparar os valores em uma coluna de chave primária que tinha nome e sobrenome, portanto, não queria aparar todo o espaço em branco, pois isso removeria o espaço entre o nome e o sobrenome, que eu precisava manter. O que funcionou para mim foi ...
ou
ou
Observe que a primeira instância do FIELD está entre aspas simples, mas a segunda não está entre aspas. Eu tive que fazer dessa maneira ou isso me deu um erro de sintaxe, dizendo que era uma chave primária duplicada quando eu tinha as aspas.
fonte
Se você precisar usar o corte na consulta de seleção, também poderá usar expressões regulares
retornar linhas com campo como 'query-string'
fonte
você pode usar ltrim ou rtrim para limpar espaços em branco para a direita ou esquerda ou uma string.
fonte
Você pode usar o seguinte sql, UPDATE
TABLE
SETColumn
= replace (coluna, '', '')fonte
Eu sei que já é aceito, mas para aqueles que buscam "remover TODOS os espaços em branco" (não apenas no início e no final da string):
EDIT 2019/6/20: Sim, isso não é bom. A função retorna a parte da sequência desde "quando o espaço de caracteres ocorreu pela primeira vez". Então, acho que dizer isso remove os espaços em branco à esquerda e à direita e retorna a primeira palavra:
fonte