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)

TigreTigre
la source
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)
long cou
la source
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

Łukasz Rysiak
la source
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', ' '));
Géo
la source
9

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

Ci-dessus fonctionne pour très bien.

Phaneendra Kasalanati
la source
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)
Ulysnep
la source
2
UPDATE mytable SET title=TRIM(REPLACE(REPLACE(title, "\n", ""), "\t", ""));
Risse
la source
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)
Darshan Montgomery
la source
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

Lue Inubashiri
la source
0

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

REPLACE(REPLACE(column_name , '\n', ''), '\r', '')
jay_mziray
la source