2012-11-07 17 views
15

Aşağıdaki sorguyu çalıştırdım ve herhangi bir nedenle veritabanında yeni satır karakterini değiştirmiyor. Satırların 1 eşleştiğini ancak değişiklik olmadığını söylüyor. Neyin yanlış olabilir?MYSql'deki yeni satır karakterini DEĞİŞTİR çalışmıyor

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

Değiştirme kodunu saklamak istediğiniz sütun nedir? "Soru = DEĞİŞTİR (soru, '\\ n', '')' anlamına gelmediğinden emin misiniz? –

+0

Sorguyu satırda bulduğunu ancak değişiklik yapmıyor çünkü 'replace' bulunamadı \\ n ' – jcho360

cevap

24

Sen \n değil \\n kullanarak satır karakteri eşleşebilir.

Kodu: ama senin yerini alamaz:

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

\ n ile bile denedim ve bu güncelleştirme yapılmadı. –

+1

Satırı "SELECT" kullanarak eşleştirebilir, örneğin SELECT * FROM aboutme WHERE abouttext LIKE '% \ n%' '? Eşleştirmek için doğru kontrol karakterini bulmanız gerekebilir. Bakınız örn. Bu sayfada listelenen kod: http://dev.mysql.com/doc/refman/5.5/en/regexp.html – Ryan

0

bu demek ne

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) 

oluyor size '1 satır eşleşti' var neden o çalışıyor nerede durum olduğunu budur Değiştirmek için \\n bulmak, bu yüzden changed: 0 bu yüzden tablo verilerinizi kontrol edin.

1

\n içeriyor, ancak \r var. Senin durumunda

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

:

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

\ n benim durumumda olduğu gibi çalışmazsa, çalışmış aşağıdaki \ r \ n

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

Davam web uygulaması oldu.

0

DEĞİŞTİR işlevi harfe duyarlıdır, ben MySql sunucu sürümü ait düşünüyorum

açıklama = bilgi ile farklı sonucudur (açıklama, 'Videosite', 'video.5la.net') DEĞİŞTİR = DEĞİŞTİR (açıklama, 'VideoSite', 'video.5la.net')

İlgili konular