web-dev-qa-db-fra.com

REMPLACER le caractère de nouvelle ligne dans MYSql ne fonctionne pas

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
18
Pit Digger

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';
33
Ryan

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.

11
Hammad Khan

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

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

0
Do Hoa Vinh

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.

0
jcho360