2

データベースのテーブルを更新する必要があります。簡単にするために、テーブルの名前が で、2 つの列があると仮定しtabます:id (PRIMARY KEY, NOT NULL)col (UNIQUE VARCHAR(300)). この方法でテーブルを更新する必要があります。

id                    col
----------------------------------------------------
1                     'One two three'
2                     'One twothree'
3                     'One two       three'
4                     'Remove white spaces'
5                     'Something'
6                     'Remove whitespaces '

に:

id                    col
----------------------------------------------------
1                     'Onetwothree'
2                     'Removewhitespaces'
3                     'Something'

Id更新後の行の番号と順序は重要ではなく、異なる場合があります。私はPostgreSQLを使用しています。一部の列は FOREIGN KEY です。そのため、UNIQUEから制約を削除するのcolは面倒です。

4

3 に答える 3

2

replaceこの形式で使用するだけで、あなたが望むことができると思います。

update tab
set col = replace(col, ' ', '');

そのためのSQLFiddleがあります。

于 2013-07-18T15:42:54.700 に答える
0

エルウィンよりもはるかに簡単に解決しました。私のコンピューターにはテストするためのSQLがありませんが、次のようなものがうまくいきました:

DELETE FROM tab WHERE id IN (
    SELECT id FROM (
        SELECT id, col, row_number() OVER (PARTITION BY regexp_replace(col, '[ \t\n]*', '')) AS c WHERE c > 1;
    )
)

UPDATE tab SET col = regexp_replace(col, '[ \t\n]*', '');
于 2013-07-20T12:17:32.403 に答える