2012-11-07 13 views
15

Ich führte folgende Abfrage und aus irgendeinem Grund nicht ersetzen neue Zeile Zeichen in der Datenbank. Es sagt Zeilen passen 1 aber keine Änderung. Was kann falsch sein?REPLACE neues Zeilenzeichen in MYSql funktioniert nicht

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 
+0

Ist 'overtext' die Spalte, in der Sie den Ersatz speichern möchten? Bist du sicher, dass du nicht "Frage = ERSETZEN (Frage, \\ n ',"') meinst? –

+0

Ich denke, dass die Abfrage die Zeile gefunden hat, aber es hat die Änderungen nicht vorgenommen, weil die 'ersetzen' nicht gefunden '\\ n' – jcho360

Antwort

24

Sie können ein Newline-Zeichen übereinstimmen \n verwenden, nicht \\n.

Code:

UPDATE aboutme 
SET abouttext=REPLACE(abouttext,'\n','') 
WHERE userid='5099a95cd944b8.22468149'; 
+0

Ich versuchte sogar mit \ n und das nicht aktualisiert. –

+1

Können Sie die Zeile mit einem 'SELECT' abgleichen, z. B.' SELECT * FROM aboutme WHERE übertext LIKE '% \ n%' '? Möglicherweise müssen Sie das richtige Steuerzeichen finden, um übereinzustimmen. Siehe z.B. der Code auf dieser Seite: http://dev.mysql.com/doc/refman/5.5/en/regexp.html – Ryan

0

das ist, was passiert

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) 

Was ich meinte ist, dass die in dem Zustand, dass es funktioniert, warum Sie haben ‚Reihen matched: 1‘, aber Ihr nicht ersetzen Finden Sie \\n, um es zu ersetzen, deshalb changed: 0 überprüfen Sie so Ihre Tabellendaten.

1

Sie denken, dass es \n enthält, aber es hat \r.

update [Table] set [column]=replace(convert([column] using utf8) ,'\r',''); 

In Ihrem Fall:

update aboutme set abouttext=replace(convert(abouttext using utf8) ,'\r',''); 
8

Wenn \ n nicht wie in meinem Fall nicht funktioniert, die gearbeitet folgenden \ r \ n

UPDATE aboutme 
SET abouttext=REPLACE(abouttext,'\r\n','') 
WHERE userid='5099a95cd944b8.22468149'; 

Mein Fall war Web-Anwendung. die

0

REPLACE-Funktion Groß- und Kleinschreibung ist, ich denke, es gehört MySQL-Server-Version

description = REPLACE (Beschreibung, 'Videosite', 'video.5la.net') unterscheidet Ergebnis mit description = REPLACE (Beschreibung, 'VideoSite', 'video.5la.net'

Verwandte Themen