SQL Developer でデータベース データを更新したいと考えています。
UPDATE TABLE_NAME SET COLUMN_NAME = LTRIM(RTRIM(COLUMN_NAME))
しかし、「行が更新されました」というメッセージが表示されても効果はありません。先頭と末尾の空白は、すべての文字列の後ろにまだ存在します。
何か案は?
更新後にコミットしますか?
update tableName set col1 = trim(col1);
commit;
2 つの異なるテーブルで同じ問題が発生しました。最初のテーブル トリムは問題ありませんでしたが、2 回目は効果がなく、スペースがまだ残っていました。
違いは、私が使用していた最初のテーブルとvarchar2(30)
2 番目のテーブル (トリムが機能しなかった) では、char(30)
2 番目のテーブルchar(30)
をvarchar2(30)
トリムに変更すると、期待どおりに機能しました。
試しましたREGEXP_REPLACE(your column name, '\s*', '')
か?
元: UPDATE TABLE_NAME SET COLUMN_NAME = REGEXP_REPLACE(COLUMN_NAME, '\s*', '')
テーブルに n 行があり、それらすべてに更新を適用しているため、n 行が更新されたことを示すメッセージが表示されます。
更新が有効になる行のみに更新を制限するには、次を使用します。
UPDATE TABLE_NAME
SET COLUMN_NAME = LTRIM(RTRIM(COLUMN_NAME))
WHERE COLUMN_NAME != LTRIM(RTRIM(COLUMN_NAME));