J'ai exécuté la requête suivante et pour une raison quelconque, il ne remplace pas le nouveau caractère de ligne dans la base de données. Il est indiqué que les lignes ont correspondu à 1 mais aucun changement. Qu'est-ce qui ne va pas?
mysql> UPDATE aboutme SET abouttext=REPLACE(abouttext,'\\n','') WHERE userid='5099a95cd944b8.22468149';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0
Vous pouvez faire correspondre un caractère de nouvelle ligne en utilisant \n
, pas \\n
.
Code:
UPDATE aboutme
SET abouttext=REPLACE(abouttext,'\n','')
WHERE userid='5099a95cd944b8.22468149';
Si\n ne fonctionne pas comme dans mon cas, les éléments suivants ont fonctionné\r\n
UPDATE aboutme
SET abouttext=REPLACE(abouttext,'\r\n','')
WHERE userid='5099a95cd944b8.22468149';
Mon cas était une application Web.
Vous pensez qu'il contient \n
, mais il a \r
.
update [Table] set [column]=replace(convert([column] using utf8) ,'\r','');
Dans ton cas:
update aboutme set abouttext=replace(convert(abouttext using utf8) ,'\r','');
la fonction REPLACE est sensible à la casse, je pense qu'elle appartient à la version du serveur MySql
description = REPLACE (description, 'Videosite', 'video.5la.net') est différent avec description = REPLACE (description, 'VideoSite', 'video.5la.net')
c'est ce qui se passe
mysql> mysql> select * from t1 limit 3;
+----------+------------+-----------+---------------------+
| actor_id | first_name | last_name | last_update |
+----------+------------+-----------+---------------------+
| 1 | PENELOPE | GUINESS | 2006-02-15 04:34:33 |
| 2 | NICK | WAHLBERG | 2006-02-15 04:34:33 |
| 3 | ED | CHASE | 2006-02-15 04:34:33 |
+----------+------------+-----------+---------------------+
3 rows in set (0.00 sec)
mysql> update t1 set first_name=replace(first_name,'abc','') where first_name='ed';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 10 Changed: 0 Warnings: 0
mysql> select * from t1 limit 3;
+----------+------------+-----------+---------------------+
| actor_id | first_name | last_name | last_update |
+----------+------------+-----------+---------------------+
| 1 | PENELOPE | GUINESS | 2006-02-15 04:34:33 |
| 2 | NICK | WAHLBERG | 2006-02-15 04:34:33 |
| 3 | ED | CHASE | 2006-02-15 04:34:33 |
+----------+------------+-----------+---------------------+
3 rows in set (0.00 sec)
mysql> update t1 set first_name=replace(first_name,'ED','EDD') where first_name='ed';
Query OK, 10 rows affected (0.00 sec)
Rows matched: 10 Changed: 10 Warnings: 0
mysql> select * from t1 limit 3;
+----------+------------+-----------+---------------------+
| actor_id | first_name | last_name | last_update |
+----------+------------+-----------+---------------------+
| 1 | PENELOPE | GUINESS | 2006-02-15 04:34:33 |
| 2 | NICK | WAHLBERG | 2006-02-15 04:34:33 |
| 3 | EDD | CHASE | 2006-02-15 04:34:33 |
+----------+------------+-----------+---------------------+
3 rows in set (0.00 sec)
Ce que je voulais dire, c'est que la condition où ça marche est la raison pour laquelle vous avez 'lignes appariées: 1', mais votre remplacement ne trouve pas \\n
pour le remplacer, c'est pourquoi changed: 0
afin de vérifier vos données de table.