Comment supprimer les caractères de nouvelle ligne des lignes de données dans mysql?


87

Je peux parcourir toutes les lignes d'un script php et faire

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

et la coupe peut supprimer \ n

Mais je me demandais simplement si quelque chose de même pourrait être fait en une seule requête?

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

est-ce que ça marchera? Je peux alors simplement exécuter cette requête sans avoir besoin de boucler!

Merci

(PS: je pourrais le tester mais la table est assez grande et ne veut pas jouer avec les données, alors réfléchissez simplement si vous avez testé quelque chose comme ça avant)


Vous pouvez simplement vous débarrasser de la clause where ... soyez prudent avec votre trim car vous pourriez avoir d'autres caractères dans l'ensemble (comme le retour chariot '\ r')
jkelley

Vous devriez avoir testé cela avant de poser cette question. Ça marche. Si vous voulez tester cela sur une grande table, vous pouvez utiliser la clause LIMIT.
Lukasz Lysik

Quel est le problème avec la clause WHERE? Juste curieux
Phill Pafford

@PhillPafford Rien, techniquement, c'est juste redondant. (Je sais que cela a> 5 ans, mais cela pourrait aider d'autres personnes à venir le lire.)
Bing

Réponses:


121

votre syntaxe est fausse:

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

Une addition:

Si le caractère de nouvelle ligne est au début du champ:

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

6
venant de MSSQL, cette syntaxe m'était très étrangère. je pensais que vous utilisiez un pseudocode! mais ça a marché :)
Jeff

Documentation sur TRIM () pour référence.
Mark G

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

travaillé pour moi.

même si c'est similaire, il se débarrassera également de \ r \ n

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


8
cela ne supprime pas la fin \ n, il supprime tout \ n, ce qui n'est pas souhaité ici.
longneck

20
Cela n'a peut-être pas fonctionné pour l'OP exact, mais a aidé dans une situation avec laquelle je traitais, +1
Mike Purcell

A travaillé pour moi, merci.
Exoon

exactement ce dont j'avais besoin.
user3453428

14

1) Remplacez tous les nouveaux caractères de ligne et de tabulation par des espaces.

2) Supprimez tous les espaces de début et de fin .

 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),''));

Ci-dessus fonctionne pour très bien.


3
Celui-ci est utile lorsque '\ n' ne fonctionne pas (testé sur mysql workbench)
Mohamed23gharbi

6

Supprime les retours de fin lors de l'importation depuis Excel. Lorsque vous exécutez cela, vous pouvez recevoir une erreur indiquant qu'il n'y a pas de WHERE; ignorer et exécuter.

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

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

4
cela ne supprime pas la fin \ n, il supprime tout \ n, ce qui n'est pas souhaité ici.
longneck

0

Mes 2 cents.

Pour me débarrasser de mes \ n je devais faire un \\ n. J'espère que cela aide quelqu'un.

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

0

Pour les caractères de nouvelle ligne

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);

Pour tous les caractères d'espace blanc

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);

En savoir plus: Fonction MySQL TRIM


0

En jouant avec les réponses ci-dessus, celle-ci fonctionne pour moi

REPLACE(REPLACE(column_name , '\n', ''), '\r', '')
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.