2012-11-07 17 views
15

次のクエリを実行し、何らかの理由でデータベース内の改行文字を置き換えませんでした。それは、行は1と一致したが、変更はないと言います。何が間違っていますか?MYSql内の改行文字が正しく機能しない

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

「abouttext」は、置き換えを保存する列ですか? 'question = REPLACE(question、 '\\ n'、 '')'を意味するのではないですか? –

+0

私はそのクエリがその行を見つけたと思うが、 'replace'が '\\ n'を見つけられなかったので変更を加えなかった。 – jcho360

答えて

24

あなたは\n、ない\\nを使用して改行文字を一致させることができます。

コード:しかし、あなたの代わりにはなりません。

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

\ nを使っても試してみた。 –

+1

'SELECT * FROM aboutme WHERE abouttext LIKE '%\ n%''のような 'SELECT'を使って行を照合できますか?一致する正しい制御文字を見つける必要があるかもしれません。例えば、このページに記載されているコード:http://dev.mysql.com/doc/refman/5.5/en/regexp.html – Ryan

0

これは私が何を意味するのか

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) 

起こっては、あなたが「1行がマッチした」持っている理由、それはそれを働いている場所の条件だということは何かということですそれを置き換えるために\\nを見つけるので、changed: 0があなたのテーブルデータをチェックします。

1

\nが含まれていると思われますが、\rです。あなたのケースでは

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

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

\ nは私の場合のように動作しない場合は、働いていた以下の\ rをする\ nは

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

私の場合は、Webアプリケーションでした。

0

REPLACE関数は大文字と小文字が区別され、iが(説明、 'Videosite'、 'video.5la.net')をREPLACE =それはMySQLサーバのバージョン

説明を属し思う は 記述と異なる結果である= REPLACE( description、 'VideoSite'、 'video.5la.net')

関連する問題