2

SQL Developer でデータベース データを更新したいと考えています。

UPDATE TABLE_NAME SET COLUMN_NAME = LTRIM(RTRIM(COLUMN_NAME))

しかし、「行が更新されました」というメッセージが表示されても効果はありません。先頭と末尾の空白は、すべての文字列の後ろにまだ存在します。

何か案は?

4

5 に答える 5

11

更新後にコミットしますか?

update tableName set col1 = trim(col1);
commit;
于 2013-07-22T06:44:03.783 に答える
3

2 つの異なるテーブルで同じ問題が発生しました。最初のテーブル トリムは問題ありませんでしたが、2 回目は効果がなく、スペースがまだ残っていました。

違いは、私が使用していた最初のテーブルとvarchar2(30)2 番目のテーブル (トリムが機能しなかった) では、char(30)

2 番目のテーブルchar(30)varchar2(30)トリムに変更すると、期待どおりに機能しました。

于 2014-01-06T15:50:18.987 に答える
1

試しましたREGEXP_REPLACE(your column name, '\s*', '')か?

元: UPDATE TABLE_NAME SET COLUMN_NAME = REGEXP_REPLACE(COLUMN_NAME, '\s*', '')

于 2013-07-22T06:30:48.327 に答える
0

テーブルに n 行があり、それらすべてに更新を適用しているため、n 行が更新されたことを示すメッセージが表示されます。

更新が有効になる行のみに更新を制限するには、次を使用します。

UPDATE TABLE_NAME
SET    COLUMN_NAME = LTRIM(RTRIM(COLUMN_NAME))
WHERE  COLUMN_NAME != LTRIM(RTRIM(COLUMN_NAME));
于 2013-07-22T07:20:03.217 に答える