2012-04-24 2 views
0

を空白を削除します - ちょうど1 によってすべてのスペースを置き換える -は、私が過度のスペースと私のデータベースのレコードをたくさん持っているSQL

to buy books is like to buy 
bad journalists aren't taken hostage 
    for your information this isn't what we do 

は、(私の)SQL にする方法はありますストリップをすべて文字列の最初と最後の空白?

そうでない場合にのみ存在し、内蔵のサポート私はいつも

$cleaned = trim(preg_replace('/\s+/', ' ', $string)); 

を通じてすべてのレコードを探して、PHPでそれを行うことができます。しかし、それは私が想像するより多くの時間を必要とするであろう(私は数百万レコードを持っている)

+0

データベースレベルでも正規表現を使用できます。 –

+0

@ypercube真実だが[置き換えるのは痛みだ](http://stackoverflow.com/questions/3161395/mysql-regex-replace)。 –

+0

私は2,3日前に非常によく似た質問をしました[http://stackoverflow.com/questions/10193297/best-way-to-clean-mysql-string-data-to-plaintext-and-trim-beginning-end-スペース](ここ)あなたが始めるかもしれない。 – pdizz

答えて

2

これは1回の操作であるため、レコードをtextformat(csv、sql inserts ..)にエクスポートして、正規表現をサポートする良いテキストエディタで置き換えることができます。 あなたのregexprが完璧ではなかったときにバックアップを提供します。その後、新しいテーブルにインポートします。

コードを置き換えるときに、置き換えを必要としないレコードを「%%」などのようなもので除外して処理を高速化することができます。

最後に、をdbに書き込む前に、余分なスペースを除外するためにこれらのレコードを書き込むサーバーコードを更新する必要があります。

0

MySQLでの正規表現を使用したパターンマッチングhttp://www.mysqludf.org/lib_mysqludf_preg/のようなユーザー定義の関数を使用して、必要を解決することは可能です。

これはマルチバイト文字をサポートしていません。したがって、このソリューションでは、1バイト文字エンコーディングに限定されています。

関連する問題