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.