Como remover novos caracteres de linha de linhas de dados no mysql?


87

Posso percorrer todas as linhas em um script php e fazer

UPDATE mytable SET title = "'.trim($row['title']).'" where id = "'.$row['id'].'";

e o corte pode remover \ n

Mas eu estava pensando se algo igual poderia ser feito em uma consulta.

 update mytable SET title = TRIM(title, '\n') where 1=1

será que vai dar certo? Posso então apenas executar essa consulta sem precisar fazer um loop!

obrigado

(PS: eu poderia testá-lo, mas a tabela é muito grande e não quer mexer com os dados, então pensei se você já testou algo assim antes)


Você pode simplesmente se livrar da cláusula where ... tenha cuidado com o corte, pois você pode ter outros caracteres no conjunto (como retorno de carro '\ r')
jkelley

Você deveria ter testado isso antes de fazer esta pergunta. Funciona. Se você quiser testar isso em uma mesa grande, pode usar a cláusula LIMIT.
Lukasz Lysik

O que há de errado com a cláusula WHERE? Só por curiosidade
Phill Pafford,

@PhillPafford Nada, tecnicamente, é apenas redundante. (Eu sei que isso tem> 5 anos, mas pode ajudar outras pessoas a lê-lo.)
Bing

Respostas:


121

sua sintaxe está errada:

update mytable SET title = TRIM(TRAILING '\n' FROM title)

Adição:

Se o caractere de nova linha estiver no início do campo:

update mytable SET title = TRIM(LEADING '\n' FROM title)

6
vindo do MSSQL, essa sintaxe era muito estranha para mim. Achei que você estava usando pseudocódigo! mas funcionou :)
Jeff,

Documentação em TRIM () para referência.
Mark G

121
UPDATE test SET log = REPLACE(REPLACE(log, '\r', ''), '\n', '');

trabalhou para mim.

embora seja semelhante, também eliminará \ r \ n

http://lists.mysql.com/mysql/182689


8
isso não remove o resto \ n, remove todos os \ n, o que não é desejado aqui.
longneck de

20
Isso pode não ter funcionado para o OP exato, mas ajudou em um ponto com o qual eu estava lidando, +1
Mike Purcell

Funcionou para mim, obrigado.
Exoon,

exatamente o que eu precisava.
user3453428

14

1) Substitua todas as novas linhas e caracteres de tabulação por espaços.

2) Remova todos os espaços à esquerda e à direita .

 UPDATE mytable SET `title` = TRIM(REPLACE(REPLACE(REPLACE(`title`, '\n', ' '), '\r', ' '), '\t', ' '));

9

update mytable set title=trim(replace(REPLACE(title,CHAR(13),''),CHAR(10),''));

Acima está funcionando bem.


3
Este é útil quando '\ n' não está funcionando (testado no mysql workbench)
Mohamed23gharbi

6

Remove os retornos finais ao importar do Excel. Ao executar isso, você pode receber um erro informando que não há WHERE; ignorar e executar.

UPDATE table_name SET col_name = TRIM(TRAILING '\r' FROM col_name)

2
UPDATE mytable SET title=TRIM(REPLACE(REPLACE(title, "\n", ""), "\t", ""));

4
isso não remove o resto \ n, remove todos os \ n, o que não é desejado aqui.
longneck de

0

Meus 2 centavos.

Para me livrar dos meus \ n's, eu precisava fazer um \\ n. Espero que ajude alguém.

update mytable SET title = TRIM(TRAILING '\\n' FROM title)

0

Para novos caracteres de linha

UPDATE table_name SET field_name = TRIM(TRAILING '\n' FROM field_name);
UPDATE table_name SET field_name = TRIM(TRAILING '\r' FROM field_name);
UPDATE table_name SET field_name = TRIM(TRAILING '\r\n' FROM field_name);

Para todos os caracteres de espaço em branco

UPDATE table_name SET field_name = TRIM(field_name);
UPDATE table_name SET field_name = TRIM(TRAILING '\n' FROM field_name);
UPDATE table_name SET field_name = TRIM(TRAILING '\r' FROM field_name);
UPDATE table_name SET field_name = TRIM(TRAILING '\r\n' FROM field_name);
UPDATE table_name SET field_name = TRIM(TRAILING '\t' FROM field_name);

Leia mais: Função TRIM do MySQL


0

Brincando com as respostas acima, esta funciona para mim

REPLACE(REPLACE(column_name , '\n', ''), '\r', '')
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.